TypeScriptで知っておきたい整数・安全整数判定の正しい使い方

2023.08.19 に更新記事は 2 分で読めます
サムネイル画像

この記事ではJavaScriptやTypeScriptで数値を扱う時に使用するNumber.isIntegerNumber.isSafeInteger について解説します。

数値のチェックはよく使うため覚えておくと便利です!

整数かどうかの判定: Number.isInteger

illust

初めに値が整数かどうかを判定するのは Number クラスの isInteger メソッドです。

console.log(Number.isInteger(42));       // true
console.log(Number.isInteger(42.0));     // true
console.log(Number.isInteger(42.5));     // false
console.log(Number.isInteger('42'));     // false
console.log(Number.isInteger(true));     // false
console.log(Number.isInteger(undefined));// false

面白いですね。
42.0 も数学的には整数として扱われるので true が返ります。

そして、数値以外の型に対しては当然ですが false が返ることが確認できます。

安全な整数かの判定: Number.isSafeInteger

illust

次に、isSafeInteger メソッドを用いて整数が安全な範囲に収まっているか確認する方法を紹介します。

console.log(Number.isSafeInteger(9007199254740991));      // true
console.log(Number.isSafeInteger(Math.pow(2, 53) - 1));   // true
console.log(Number.isSafeInteger(Math.pow(2, 53)));       // false
console.log(Number.isSafeInteger('9007199254740991'));    // false
console.log(Number.isSafeInteger(Infinity));              // false

このときの「安全な整数」というのは、IEEE-754倍精度数として正確に表現できる範囲の整数を指します。

具体的には -9007199254740991 から 9007199254740991 の範囲になります。

注意点とまとめ

Number.isInteger は数値が整数であるかを調べます。
Number.isSafeInteger は数値が安全な範囲の整数であるかを調べます。
数値型ではない場合、両メソッドとも false を返します!
数値の扱いには注意が必要ですね。

これらのメソッドを使用することで、より安全なコードを書くことができるようになります。

プロフィールアイコン

Syuu

フロントエンドが好きなWEBエンジニア Next.js / React / TypeScript

SHARE