【入門編】 Recordユーティリティ型 – TypeScript実践ガイド

こんにちは!TypeScriptの世界へようこそ。
型定義の世界に足を踏み入れると、最初は「何だか難しそう…」と身構えてしまうかもしれませんね。でも、大丈夫。今日お話しする`Record`型は、あなたのコードを劇的にスッキリさせ、かつミスを減らしてくれる「魔法の整理箱」のような存在なんです。

一緒に紐解いていきましょう。

—

1. `Record`型って、結局なにもの?

TypeScriptでオブジェクトを作るとき、普通はこう書きますよね。

// 普通のオブジェクト定義
const user: { name: string; age: number } = {
name: “たろう”,
age: 25
};

でも、もし「キーが何種類あるか分からないけれど、全部同じ種類のデータが入る」という状況だったらどうでしょう?例えば、「各曜日の最高気温」を記録するような場合です。

そんな時、いちいち全てのキーを列挙するのは大変ですよね。そこで登場するのが `Record` です。

イメージとしては、「ラベル(Keys)」と「中身の型(Type)」をセットにして、一気に箱を作るための型だと思ってください。

—

2. お買い物の「レシート」でイメージしてみよう

例えば、あなたがスーパーでお買い物をしたとします。レシートには「品名(キー)」と「価格(値)」が並んでいますよね。

「品名は文字列(string)で、価格は数値(number)だ」と決まっているなら、`Record`を使ってこう定義できます。

// 買い物リストの型を定義
// キー:商品名(string)、値:価格(number)
const shoppingList: Record = {
“りんご”: 150,
“バナナ”: 200,
“牛乳”: 250
};

// これなら、新しい商品が増えても大丈夫!
shoppingList[“パン”] = 180;

どうでしょう? `Record` と書くだけで、「この箱の中身は、キーが文字列で、値は全部数値だよ!」とTypeScriptに教えることができました。これだけで、もし間違えて文字列(`”高い”`など)を入れようとすると、TypeScriptが「それはルール違反だよ!」と優しく警告してくれます。

—

3. もっと厳密に!「決まった項目」だけを管理する

`Record`の面白いところは、キーを自由に制限できることです。
さっきの例ではキーを「どんな文字列でもOK(string)」にしましたが、次は「月曜日から金曜日まで」に限定してみましょう。

// キーを限定する(ユニオン型を使います)
type Weekdays = “mon” | “tue” | “wed” | “thu” | “fri”;

// 「平日限定」のスケジュール表
const workSchedule: Record = {
mon: “会議”,
tue: “資料作成”,
wed: “打ち合わせ”,
thu: “開発”,
fri: “振り返り”
};

// もし「sun(日曜日)」を入れようとすると…
// エラーが出るので、バグを未然に防げるんです!

これこそがTypeScriptの真骨頂です。「入れられる場所をあらかじめ決めておくことで、未来の自分のミスをガードする」。これができるだけで、あなたのコードの信頼性はグッと上がります。

—

4. 初学者がつまずきやすい「落とし穴」

ここで一つだけ、現場でよくある失敗談をシェアしますね。

`Record`を使うと、「そのキーが存在しない場合でも、TypeScriptは中身があるものとして扱ってしまう」という特徴があります。

const scores: Record = {};

// TypeScriptは「scores.mathは数値が入っているはず!」と信じ込む
console.log(scores.math + 10);
// 実際には undefined + 10 なので、実行時にNaNになってしまう…!

「あれ?型定義したのに動かない!」と焦るかもしれませんが、大丈夫。そんな時は、値を `number | undefined` にしたり、値の存在をチェックする処理を添えてあげればOKです。

—

最後に:完璧を目指さなくていいんです

`Record`は、コードを整理整頓するための「整理箱」です。最初は使いこなせなくても全く問題ありません。「あ、ここ同じ型のものがたくさん並ぶな」と思った瞬間に、そっとこの`Record`を思い出してみてください。

TypeScriptは、あなたの書くコードをより安全で、より読みやすくするための最高の相棒です。今日学んだ「整理箱」を武器に、ぜひ明日からのコーディングを少しだけ楽しんでみてくださいね。

もし分からないことがあれば、いつでも何度でも聞いてください。プログラミングの道は、そうやって一つずつ積み上げていくのが一番の近道ですから。応援していますよ!

コメント

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