使いがちな組み込み型メモ
Utility Types より
型の 抽出 / 除外
Extract<T, U>
T から選択された型を抽出した型を構築する
Extract<string | number, string> // -> string
Exclude<T, U>
Extract の逆
T から選択された型を除いた型を構築する
Exclude<string | number, string> // -> number
NonNullable<T>
T から null, undefined を除いた型を構築する
NonNullable<string | number | null | undefined> // -> string | number
オブジェクト系
Record<K, T>
K を key、T を value としたオブジェクト型を構築する
Record<string, number> // -> { [key: string]: number; }
Record<string | number, string | number> // -> { [key: string]: string | number; [key: number]: string | number; }
Record<"foo" | "bar", string> // -> { foo: string; bar: string; }
Pick<T, K>
T から選択されたプロパティのみの型を構築する
Pick<{foo: string, bar: number}, "foo"> // -> { foo: string; }
Omit<T, K>
Pick の逆
T から選択されたプロパティを除いた型を構築する
Omit<{foo: string, bar: number}, "foo"> // -> { bar: string; }
プロパティ系
Partial<T>
全てのプロパティをオプションにする
Partial<{ foo: string; bar: number }> // -> { foo?: string; bar?: number; }
Required<T>
全てのプロパティを必須にする
Required<{ foo?: string; bar?: number }> // -> { foo: string; bar: number; }
Readonly<T>
全てのプロパティを readonly
にする
Readonly<{ foo: string; bar: number }> // -> { readonly foo: string; readonly bar: number; }
関数
ReturnType<T>
関数型の戻り値の型を構築する
ReturnType<() => void> // -> void
ReturnType<() => string> // -> string
const foo = () => "Hello";
ReturnType<typeof foo> // -> string
Parameters<T> / ConstructorParameters<T>
関数型 / クラス の引数の型のタプルを構築する
Parameters<() => void> // -> []
Parameters<(foo: string, bar: number) => void> // -> [string, number]
Parameters<(foo: { bar: number }) => void> // -> [{ bar: number; }]
Parameters<({ bar }: { bar: number }) => void> // -> [{ bar: number; }]
class Foo {
constructor(foo: string, bar: number) {}
}
ConstructorParameters<typeof Foo> // -> [string, number]