上級 › 変数経由なら余分なプロパティが通る理由 › パターン1
変数経由なら余分なプロパティが通る理由
オブジェクトリテラルを直接関数に渡すと余分なプロパティはエラーになりますが、いったん変数に代入してから渡すとエラーになりません。
1 interface Point { 2 x: number; 3 y: number; 4 } 5 const raw = { x: 1, y: 2, z: 3 }; 6 function printPoint(p: Point): void { 7 console.log(p.x, p.y); 8 } 9 printPoint(____________________); ^
main.ts(9,26): error TS2353: Object literal may only specify known properties, and 'z' does not exist in type 'Point'.
空欄を埋めてコンパイルを通す
オブジェクトリテラルを直接渡すと余分なzプロパティがチェックされエラーになります。同じ内容でも変数raw経由で渡せばフレッシュネスチェックの対象外になります。
次の問題