【入門編】 リテラル型(boolean, number, string) – TypeScript実践ガイド

やあ。TypeScriptの世界へようこそ。フロントエンドの最前線でコードを書き続けていると、たまに「型なんて守らなくても動くじゃないか」という誘惑に駆られることもあるよね。でも、その「型」という小さなルールが、実は未来の自分を救う最強の魔法になるんだ。

今日は、TypeScriptの基本中の基本、でも奥が深くて最高に面白い「リテラル型」の話をしよう。難しいことは考えなくていい。一緒に紐解いていこうか。

—

「どんな値でもいい」は、実は一番危うい

TypeScriptを始めたばかりの頃、とりあえず `any` を使ってエラーを回避した経験はないかな? 「動けばいいじゃん」って思うよね。でも、それはまるで「何が入っているか分からない箱」にラベルを貼らずに倉庫へ放り込むようなもの。数ヶ月後にその箱を開けたとき、中身が爆弾なのかお菓子なのか分からなくて、泣くのは自分自身なんだ。

そこで登場するのが「リテラル型」だよ。

リテラル型ってなに?

リテラル型は、「これ以外、絶対認めない!」という究極のこだわりだよ。

例えば、`string` 型は「文字列なら何でもいいよ」という寛大な型だけど、リテラル型は「君は『赤』以外認めないからね!」と限定するんだ。

// 普通の文字列型(何でもアリ)
let color: string = “blue”;

// リテラル型(”red” しか許さない!)
let redOnly: “red” = “red”;

// 下記はエラーになる!
// redOnly = “blue”; // 「”blue” は “red” に代入できないよ!」と怒られる

なんだか厳しすぎるように見えるかな? でも、この厳しさこそが、バグを未然に防ぐ「絶対防御」になるんだよ。

—

買い物のレジをイメージしてみて

想像してみてほしい。君がオンラインショップの決済システムを作っているとする。支払い方法を選んでもらうとき、何でもかんでも受け付けたら大変だよね?

「Suica」「CreditCard」「PayPay」。この3つだけを受け付けたい。そんなとき、リテラル型とユニオン型(`|` でつなぐ魔法の記号)を組み合わせるのが正解だ。

// 支払い方法を3つに限定する
type PaymentMethod = “Suica” | “CreditCard” | “PayPay”;

function pay(method: PaymentMethod) {
console.log(`${method} で決済します`);
}

// OK!
pay(“Suica”);

// 下記はエラー!
// pay(“現金”); // 「”現金” はこのリストにないよ!」と TypeScript が教えてくれる

どうだい? 「現金」という入力が来た瞬間にコードが赤く光って教えてくれる。これなら、予期せぬ入力で決済システムが崩壊する心配もない。安心感が全然違うだろう?

—

「つまずきやすいポイント」を優しくケア

初めてこの型を使うとき、よくあるミスが「変数の宣言」との混同なんだ。

// 変数宣言で let を使うと、TypeScript は「後で変わるかもしれない」と考える
let status = “active”; // これの型は “active” ではなく string と推論される

// もし “active” というリテラル型として扱いたいなら、const を使おう
const statusConst = “active”; // これの型は “active” というリテラル型になる

もし「あれ? なんで思った通りの型にならないの?」と悩んだら、`let` なのか `const` なのかを確認してみて。TypeScriptは、君が「これは後で変えるつもりなのか?」を一生懸命推測してくれているんだ。その健気さを理解してあげると、もっと仲良くなれるよ。

—

まとめ:型は「制約」ではなく「ガイドライン」

リテラル型を使いこなすと、コードを書くときに「IDE(エディタ)が選択肢を教えてくれる」ようになるんだ。`method = ` と打った瞬間に、エディタが「Suica, CreditCard, PayPayのどれにする?」とサジェストしてくれる。

これって、すごくないかな? 自分で全部覚えなくても、コードが勝手に「ここには何を書けばいいか」をナビゲートしてくれるんだ。

最初は少し窮屈に感じるかもしれない。でも、この「決める」作業こそが、大規模な開発になればなるほど、君の時間を節約し、ミスをゼロに近づける最強の武器になる。

焦らなくて大丈夫。まずは今日、一つだけ「何でもいい変数」を「これだけは許す!」というリテラル型に変えるところから始めてみよう。君のコードは、もっと安全で、もっと美しくなるはずだからね。

またいつでも相談しに来てよ。エンジニア同士、一緒に成長していこう。

コメント

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