Code Fix

上級変数経由なら余分なプロパティが通る理由 › パターン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'.

空欄を埋めてコンパイルを通す

広告
広告スロット(未設定)

変数経由なら余分なプロパティが通る理由

TypeScriptは「作られたばかり(フレッシュ)」なリテラルだけを厳格にチェックする設計になっています。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)