TypeScript ではコンパイル時に型情報が落ちるため、実行時に interface の key などの型情報を利用することはできません。 大抵の場合は問題無いのですが、たまに型情報を利用したくなるケースがあります。 たとえば、Partial 型の結合結果が完全であることを実行時に検証するなど。 type Partial<T> = { [P in keyof T]?: Partial<T[P]> } interface Person { age: number, name: string } const p1: Partial<Person> = { age: 29 } const p2: Partial<Person> = { name: "na_o_ys" } // Partial<Person> | Partial<Person> != Person なので, これはコンパイルエ
