上級 › 変数経由なら余分なプロパティが通る理由 › パターン2
変数経由なら余分なプロパティが通る理由
オブジェクトリテラルを直接関数に渡すと余分なプロパティはエラーになりますが、いったん変数に代入してから渡すとエラーになりません。
1 interface Item { 2 name: string; 3 } 4 const raw = { name: "Pen", price: 100 }; 5 function printItem(i: Item): void { 6 console.log(i.name); 7 } 8 printItem(___________________________); ^
main.ts(8,26): error TS2353: Object literal may only specify known properties, and 'price' does not exist in type 'Item'.
空欄を埋めてコンパイルを通す
リテラルとして直接渡すと余分なpriceがエラーになります。変数rawを経由して渡すとこのチェックは働きません。
次の問題