| オブジェクトの形状 |
|---|
| すべてのプロパティが省略可能になった T。 | type Update = Partial<User> |
| すべてのプロパティが必須になった T。 | type Strict = Required<Opts> |
| すべてのプロパティが readonly になった T。 | type Frozen = Readonly<User> |
| K のキーだけを残した T。 | type Preview = Pick<User, "id" | "name"> |
| K のキーを取り除いた T。 | type SafeUser = Omit<User, "password"> |
| キーが K、値が V であるオブジェクト。 | type Scores = Record<string, number> |
| ユニオンの絞り込み |
|---|
| X に代入可能なメンバーを取り除いたユニオン U。 | type NoNull = Exclude<T, null> |
| U のうち X に代入可能なメンバー。 | type OnlyStr = Extract<T, string> |
| null と undefined を取り除いた T。 | type Def = NonNullable<T> |
| 関数の型 |
|---|
| 関数 F のパラメータ型のタプル。 | type P = Parameters<typeof fn> |
| 関数 F が返す型。 | type R = ReturnType<typeof fn> |
| コンストラクタ F のパラメータ型のタプル。 | type C = ConstructorParameters<typeof Date> |
| コンストラクタ F が生成するインスタンスの型。 | type D = InstanceType<typeof Date> |
| Promise が再帰的に解決される型。 | type Data = Awaited<Promise<User>> |
| 文字列リテラルの変換 |
|---|
| 文字列リテラル S を大文字にしたもの。 | type A = Uppercase<"abc"> // "ABC" |
| 文字列リテラル S を小文字にしたもの。 | type B = Lowercase<"ABC"> // "abc" |
| 先頭の文字を大文字にした S。 | type C = Capitalize<"abc"> // "Abc" |
| 先頭の文字を小文字にした S。 | type D = Uncapitalize<"Abc"> // "aBc" |
| 関連キーワード |
|---|
| オブジェクト型 T のプロパティキーのユニオン。 | type K = keyof User |
| 値の型。再び書き下す必要はない。 | type Config = typeof defaults |
| conditional 型の内部で型を捕獲して再利用する。 | type El<T> = T extends Array<infer I> ? I : never |
| T が U に代入可能かどうかで X か Y を選ぶ。 | type IsStr<T> = T extends string ? true : false |