"a" | "b" リテラル型

最終更新:2026-10-22

"a" | "b" リテラル型

リテラル型は「値そのもの」を型として扱います。"up"、1、true はすべて型です。単独では限られた用途しかありませんが、ユニオンと組み合わせると取りうる値を正確に限定できます。

グループ型の組み合わせ
種類型
strict モード不要

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

📝 構文

type Size = "small" | "medium" | "large";
let size: Size = "medium";

const mode = "dark"; // const はリテラル型 "dark" と推論される
let level = 3;       // let は拡大推論されて number になる

⚙️ パラメータ

"a" | 42 | true文字列/数値/真偽値の 3 種類のプリミティブリテラルはすべて型になれます。"a"、42、true などです
as constオブジェクト/配列のプロパティをリテラル型に固定します。設定の定数によく使われます

戻り値:戻り値はありません。リテラル型は純粋な型レベルの概念であり、コンパイル後に消えます。

▶ サンプル

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

出力:

up x2 right x1

(トランスパイル後の実行出力。move("Up", 1) はコンパイルエラーになります。リテラルは完全に一致しなければならず、大文字小文字も区別されるからです)

💡 ポイント

ℹ️ 説明 let は広い型(string)と推論され、const はリテラル型("dark")と推論されます。これがリテラル型が生まれる最も一般的な経路です。
💡 ヒント 設定の定数オブジェクトに as const を付けると、プロパティがすべてリテラル型に固定され、関数引数のリテラルユニオンに直接渡せます。
⚠️ 注意 リテラルのマッチングは大文字小文字を区別する完全一致です。"Up" を "up" に代入することはできず、前後の空白があってもだめです。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q const はリテラル型になり、let は string になるのはなぜですか?
A const 変数は二度と変わらないので、TS は最も正確な「値の型」を使います。let には後で別の文字列が代入される可能性があるため、string に緩められます。狭い型が必要なときは注釈か as const が使えます。
Q as const は何をするものですか?
A リテラル全体を最も深い読み取り専用にアサートします。プロパティはすべてリテラル型になり、書き込めなくなります。{ method: "GET" } は { method: string } と推論されますが、as const を付けると method はちょうど "GET" になります。
Q リテラルユニオンと列挙型はどう取捨選択しますか?
A リテラルユニオンは実行時コストがゼロで、普通の文字列とシームレスに連携します。列挙型は名前空間と逆マッピングを提供します。ほとんどの業務上の値の取り扱いではリテラルユニオンで足ります(詳細は enum の項目を参照)。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%