ウェブサイト検索

TypeScript - オプションのキーを含む Pick


TypeScriptでは、Pickスタイルのユーティリティ型を持つことは可能で、そのキーは選択されたオブジェクト型に存在する場合も存在しない場合もある、ということは可能でしょうか?例えば:

interface Alpha
{
    a: boolean;
    b: boolean;
}

type Picked = OptionalPick<Alpha, 'a' | 'c'>; // { a: boolean }

回答 #1

はい、それは可能です。2番目のパラメータKを単にPropertyKeyを拡張するように定義し、その後Extractを使ってkeyof TからKのユニオンに含まれるプロパティを抽出できます:

interface Alpha
{
    a: boolean;
    b: boolean;
}

type OptionalPick<T, K extends PropertyKey> = Pick<T, Extract<keyof T, K>>
type Picked = OptionalPick<Alpha, 'a' | 'c'>; 

遊ぶ

関連記事