関数の戻り値型・引数型・Promise解決型を自動で取得するユーティリティ
// ── ReturnType<T>: 関数の戻り値の型を取得する ──────────
function createUser(name: string, age: number) {
return { id: Math.random(), name, age, createdAt: new Date() };
}
// 戻り値の型を毎回手書きしなくていい
type User = ReturnType<typeof createUser>;
// { id: number; name: string; age: number; createdAt: Date }
// ── Parameters<T>: 関数の引数の型を取得する ────────────
type CreateUserParams = Parameters<typeof createUser>;
// [name: string, age: number]
// ── Awaited<T>: Promise の中の型を取得する ──────────────
async function fetchUser() {
return { name: '田中', age: 25 };
}
type FetchedUser = Awaited<ReturnType<typeof fetchUser>>;
// { name: string; age: number }
// ← async 関数の戻り値 Promise<User> から User だけ取り出せる
// ── 実用的な使い方 ────────────────────────────────────
// 外部ライブラリの型を取り出してカスタマイズする
type ComponentProps = ReturnType<typeof SomeComponent>;ライブラリの関数から型を拝借するときに非常に便利。Awaitedを使うとasync関数の解決値の型を取得できる。