symbol / bigint symbol と bigint

最終更新:2026-10-22

symbol / bigint symbol と bigint

symbol はグローバルに一意で重複しない値を作り、オブジェクトのキーや定数の識別子に適しています。bigint は任意精度の整数を表し、number の安全な範囲を超える大きな数に使います。

グループ基本型
種類型
strict モード不要

ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。

📝 構文

const key = Symbol("id");          // 一意の値。"id" はただの説明
const big: bigint = 9007199254740993n; // 安全な整数範囲を超えた正確な値

⚙️ パラメータ

Symbol(desc)引数は説明文(.description で読み取れます)であり、一意性には影響しません
123nbigint リテラルは n で終わります。BigInt(123) で変換することもできます

戻り値:戻り値はありません。symbol/bigint は基本の型注釈です。Symbol() と BigInt() 自体は実行時の関数です。

▶ サンプル

下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:

出力:

false order
9007199254740994

(トランスパイル後の実行出力。同じ説明を持つ 2 つの Symbol は等しくなりません。これが「一意」の意味です)

💡 ポイント

ℹ️ 説明 Symbol("a") !== Symbol("a") です。説明は単なるラベルにすぎません。グローバルに登録して共有する symbol には Symbol.for("a") を使います。
⚠️ 注意 bigint は number と直接混ぜて計算できず(9007199254740993n + 1 はエラー)、JSON.stringify でもシリアライズできません。
💡 ヒント symbol のキーは Object.keys や for...in で列挙されないため、「内部メタデータ」を置くのに適しています。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q bigint が必要になるのはいつですか?
A 整数値が 2^53 - 1(9007199254740991)を超える場合や、正確な整数が要求される場合です。例えばスノーフレーク ID、暗号計算、分を単位とする大口金額の累計などです。範囲内であれば普通に number を使ってください。
Q symbol にはどんな実用的な用途がありますか?
A 3 つの典型的な場面があります。衝突しないオブジェクトの内部プロパティキーを追加する、モジュールレベルの一意な定数を作る、言語のプロトコルを実装する(Symbol.iterator、Symbol.asyncIterator などの well-known symbols)です。
Q 2 つの Symbol("a") は等しいですか?
A 等しくありません。毎回の Symbol() 呼び出しは全新しい値を作ります。モジュールをまたいで同じ symbol を取得するには Symbol.for("a")(グローバル登録表)を使います。同じキーに対して同じインスタンスを返します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%