【入門編】 Readonly, Pick, Omitによる型操作 – TypeScript実践ガイド

TypeScriptの「型操作」は、魔法の小箱!Readonly, Pick, Omitでコードを整理しよう

こんにちは!TypeScriptの世界へようこそ。
「型定義ってなんだか難しそう…」「`string`とか`number`を書くだけで精一杯だよ」という声、よく聞きます。大丈夫です、最初はみんなそうですよ。

今日は、そんな皆さんが少しずつ型に慣れてきたところで、「型を自由自在に操る魔法の道具」をご紹介します。これを知ると、コードが劇的にスッキリして、「あ、TypeScriptって実は気が利く相棒なんだな」と思えるはずです。

—

1. 「お買い物リスト」でイメージしてみよう

まずは、私たちが普段使う「お買い物リスト」をTypeScriptで書いてみます。

type ShoppingList = {
item: string; // 買うもの
price: number; // 値段
isBought: boolean; // 買ったかどうか
};

この型は、とても便利ですよね。でも、開発が進むとこんな要望が出てきます。

  • 「このリスト、途中で書き換えられちゃ困るよ!」
  • 「名前だけが必要な場面もあるな…」
  • 「買ったかどうかは今は知らなくていいや」

ここで登場するのが、Readonly, Pick, Omit という強力なサポーターたちです。

—

2. 絶対に書き換えさせない!「Readonly」

`Readonly`は、その名の通り「読み取り専用」にする魔法です。

例えば、大切な見積書や、一度決めたら変更してはいけない設定値などに使います。付箋を貼って「このデータにはペンを入れないでね!」と書き込むような感覚です。

// Readonlyを付けると、後から書き換えることができなくなります
type FixedList = Readonly;

const myItem: FixedList = {
item: “高級コーヒー豆”,
price: 2000,
isBought: false
};

// myItem.price = 1000; // ← これをやろうとすると、TypeScriptが「ダメ!」と怒ってくれます

もし書き換えようとすると、エディタが赤線を引いて教えてくれます。「うっかりミス」を防ぐ、頼もしい門番ですね。

—

3. 必要なものだけ抜き取る!「Pick」

次は、お買い物リストの中から「名前だけ」「値段だけ」を抜き出したいとき。`Pick`(ピック)を使います。これは、棚から好きなアイテムだけを手に取るようなイメージです。

// ShoppingListの中から、itemとpriceだけを抜き出す
type ItemAndPrice = Pick;

const product: ItemAndPrice = {
item: “ノートPC”,
price: 150000
// isBought: true // ← ここにisBoughtを書こうとすると「そんなの聞いてないよ」と怒られます
};

「あれもこれも」ではなく、「これだけ!」と指定できるので、関数にデータを渡すときなどに、「余計なデータが混ざらないようにする」という安全策になります。

—

4. いらないものを捨てる!「Omit」

最後は`Omit`(オミット)です。これは「〜を除外する」という意味。`Pick`が「必要なものを選ぶ」なら、`Omit`は「不要なものをゴミ箱に捨てる」イメージですね。

// ShoppingListから、isBoughtだけを捨てた新しい型を作る
type ItemWithoutStatus = Omit;

const simpleItem: ItemWithoutStatus = {
item: “リンゴ”,
price: 150
};

「項目がたくさんある型だけど、この1つだけは使わないんだよな」という時に、わざわざ新しい型をゼロから書かなくてもいいんです。既存の型を再利用できるので、コードがとてもスマートになります。

—

まとめ:型は「守り」であり「武器」になる

今日紹介した3つのツールは、現場のエンジニアが毎日使っている「お守り」のようなものです。

  • Readonly: 間違いを防ぐ門番
  • Pick: 必要なものだけ選ぶ目利き
  • Omit: 不要なものを除く断捨離

最初は難しく感じるかもしれませんが、全部一度に覚えなくて大丈夫。まずは「あ、これPickで抜き出せるかも?」とふと思い出すだけで、あなたのTypeScriptライフは確実にワンランク上のものになります。

型定義は、ただの制約ではありません。「自分やチームの未来の自分を守るための、優しいルール」なんです。

焦らず、少しずつ使いこなしてみてくださいね。応援しています!

コメント

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