【入門編】 BigIntの型判定とtypeof演算子の挙動 – JavaScript実践ガイド

こんにちは!フロントエンドの現場で長年コードと向き合っていると、ふとした瞬間に「あれ、これってどうしてこうなるんだっけ?」と立ち止まることがよくあります。プログラミングの世界って、まさにそんな小さな疑問の積み重ねですよね。

今日は、JavaScriptのデータ型の中でも、ちょっとだけ「特別扱い」されているBigInt(ビッグイント)についてお話しします。

「数字なんて全部一緒じゃないの?」と思われがちですが、実はNumber(数値型)とBigIntは、扱い方がまるで違う「別々の住人」なんです。さっそく、その秘密を紐解いていきましょう!

—

1. 数値の「箱」には2種類ある?

皆さんが普段使っている「1」「100」「3.14」といった数字は、JavaScriptでは基本的にNumber型と呼ばれます。これは、とても扱いやすくて便利な反面、実は「扱える数字の大きさには限界がある」という弱点を持っています。

例えるなら、Number型は「一般的なお財布」です。小銭から数万円までならバッチリ入りますが、宇宙規模の天文学的な数字や、超巨大な計算結果を無理やり詰め込もうとすると、中身が溢れて正確な数字を覚えていられなくなってしまうんです。

そこで登場したのが、BigInt型です。こちらは「無限に伸びる特大の金庫」だと思ってください。どれだけ桁数が多くても、正確に数字を記憶し続けることができます。

2. typeofで「中身」を調べてみよう

JavaScriptには、そのデータが何者かを教えてくれる`typeof`という便利な魔法の言葉があります。

// 普段の数字(Number型)を調べてみる
console.log(typeof 100); // 結果: “number”

// 特大の数字(BigInt型)を調べてみる
// 数字の最後に「n」をつけるとBigIntになります
console.log(typeof 100n); // 結果: “bigint”

見てください!`typeof`はちゃんと「こっちはNumberだよ」「こっちはBigIntだよ」と教えてくれます。この「bigint」という文字列が返ってきたら、それは「普通の計算機では扱えないほど大きな数字ですよ」というサインなんです。

3. 「混ぜるな危険!」のルール

ここが一番のつまずきポイントです。JavaScriptは、本来なら異なる型同士でも「よしなに」変換してくれるお節介なところがあります(これを暗黙の型変換と呼びます)。

しかし、BigIntとNumberを直接混ぜて計算しようとすると、JavaScriptは怒ります。

const myNumber = 10;
const myBigInt = 100n;

// これをやるとエラーになります!
// console.log(myNumber + myBigInt);
// エラー内容: Uncaught TypeError: Cannot mix BigInt and other types

「お財布の中身(Number)と、巨大な金庫の中身(BigInt)をどうやって合算するの?」と、コンピュータが混乱してしまうんですね。もし足し算したいなら、片方をもう片方に合わせてあげる必要があります。

const myNumber = 10;
const myBigInt = 100n;

// NumberをBigIntに変換して計算する(型を合わせる)
console.log(BigInt(myNumber) + myBigInt); // 結果: 110n

// またはBigIntをNumberに変換する(※ただし桁数に注意!)
console.log(myNumber + Number(myBigInt)); // 結果: 110

最後に:つまずいても大丈夫!

最初は「なぜわざわざ分けるの?全部一緒でいいじゃない!」と感じるかもしれません。でも、この「厳密に分ける」というルールがあるおかげで、私たちは巨大な数値を扱う時でも、計算ミスを恐れずにプログラムを書くことができるんです。

もしコードを書いていて「TypeError: Cannot mix BigInt…」という怖いエラーが出たら、「お、今自分は特大金庫と普通のお財布を一緒にしようとしていたんだな!」と思い出してください。

そうやって一つずつ、「JavaScriptがなぜそうしたいのか」という理由に気づいていくことが、プログラミングを楽しく、そして上達させる一番の近道ですよ。

今日も一緒に、素敵なコードを書いていきましょう!何かあればいつでも聞いてくださいね。

コメント

タイトルとURLをコピーしました