Type Inference
模範解答
🔑 右辺の関数に型注釈がなくても、左辺(コンテキスト)の型からパラメータ型が推論され、その型に基づいてプロパティの妥当性チェックが行われる仕組みを説明できるか。
回答履歴 (2回)
あなたの回答
代入先の変数から推論を行い、関数の引数が代入先の変数と見做して型を利用することができる。そのため、代入先に存在しないプロパティではエラーになる
フィードバック
回答は「代入先から型が推論され、それに存在しないプロパティでエラーになる」という方向性は概ね合っていますが、「代入先の変数と見做して」という表現が不正確です。正確には、`Window.onmousedown` や `Window.onscroll` の宣言型など左辺のコンテキスト型から右辺関数のパラメータ型を推論し、その推論された型に基づいて `button` プロパティの妥当性がチェックされます。この点を明示できると、模範解答により近い説明になります。
あなたの回答
代入先の変数の型と同じ型が引数として渡されると推論し、関数式の中でその型に存在しないプロパティや型と整合性が合わない挙動を取ろうとした場合にエラーを検出する
フィードバック
ユーザーの回答は、左辺(代入先)の型から右辺の関数パラメータ型を推論し、不整合なプロパティアクセスでエラーを検出するという流れを概ね捉えています。ただし、「代入先の変数の型と同じ型が引数として渡される」という表現はやや抽象的であり、`Window.onmousedown` では `MouseEvent`、`Window.onscroll` では `UIEvent` という宣言型に基づく推論である点が明示されていません。contextual typing が「式の置かれている場所の型情報」からパラメータ型を決めることに言及できると、より模範解答に近づきます。