【TypeScript】指定型から新規型を生成する機能をまとめてみた。Pick, Omit など。

こんにちは、フリーランスエンジニア太田雅昭です。

TypeScriptの型定義

TypeScriptはJavaScriptに型定義を追加したもので、ビルド前のコーディング時の型安全性を担保できます。僕は型安全性大好き人間なので、TypeScriptを見るだけで涎が出てきます。ただ複雑なのも事実で、割と長く触ってるにも関わらず、いまだに調べながらコーディングしています。

そこで、今回はTypeScriptで指定型から新規型を生成する機能をまとめてみました。自分で書けば覚えれる。レッツゴー。といった感じです。

指定型から新規型生成

以下のような具合です。

type T = {
    a: number;
    b: string;
    c: boolean;
};

// プロパティ選択
type Picked = Pick<T, 'a' | 'c'>; // { a: number; c: boolean; }

// プロパティ除外
type Omitted = Omit<T, 'b'>; // { a: number; c: boolean; }

// すべてのプロパティをオプショナルに
type PartialT = Partial<T>; // { a?: number; b?: string; }

// すべてのプロパティを必須に
type RequiredT = Required<T>; // { a: number; b: string; }

// すべてのプロパティを読み取り専用に
type ReadonlyT = Readonly<T>; // { readonly a: number; readonly b: string; }

// 特定の値を除外
type Excluded = Exclude<T, boolean | number>; // string

// 特定の値を抽出
type Extracted = Extract<T, string | boolean>; // string | boolean

// nullまたはundefinedを除外
type NonNullableT = NonNullable<T>; // string

いやぁ、TypeScript便利ですね。

小話

やはりコーヒーはブラックです。ただコーヒーだけだと飲みにくいので、ちょっとしたお菓子と一緒に楽しんでます。