上級 › Mapped typeも通常と同じ型チェックを受ける理由 › パターン1
Mapped typeも通常と同じ型チェックを受ける理由
{ [K in keyof T]?: T[K] }のようなmapped typeで生成した型は、見た目は特殊でも、実体は通常のinterfaceと同じようにプロパティごとの型チェックが行われます。
1 interface Config { 2 host: string; 3 port: number; 4 } 5 type PartialConfig = { [K in keyof Config]?: Config[K] }; 6 const c: PartialConfig = { host: "localhost", port: ______ }; ^ 7 console.log(c);
main.ts(6,47): error TS2322: Type 'string' is not assignable to type 'number'.
空欄を埋めてコンパイルを通す
PartialConfigはConfigの各プロパティをoptionalにしただけで、型自体はConfig[K]のまま維持されます。portには文字列を代入できません。
次の問題