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