https://www.typescriptlang.org/docs/handbook/2/objects.html#excess-property-checks 一度代入する理由は [[TypeScriptのオブジェクト型は定義されていないプロパティがあるとエラーになる]] を参照。 ```ts type Human = { id?: number; name?: string; }; // これは普通の使い方 const onlyId = { id: 1, }; const onlyIdHuman: Human = onlyId; // 空でも定義通り const empty = {}; const emptyHuman: Human = empty; // 一度代入すればextraプロパティがあっても問題ない const idAndExtra = { id: 1, extra: "hoge", }; const idAndExtraHuman: Human = idAndExtra; // ただし、オプショナルプロパティが1つも渡されず、extraプロパティのみの場合はNG const onlyExtra = { extra: "hoge", }; const onlyExtraHuman: Human = onlyExtra; // エラー ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBAEgrgWwIYDsoF4oG8BQUoCWAJgPwBcUKiARhAE4DcelSCE5UAzsHQSgOZMAvkxwB6MVEDKDIBiGQPYMgOzNAWAmA7BkD+8oBEGQJ2mOAMYB7FNyiGANiACSRDNmbEKARgA0OEXsPGzlovGQoKvqg2XlaiElCAXl6A5gyAQQyAWdqAlf5KgFEM7kbAUBAIYKA2WG4G6ZnZoIH+sIhBmFk5IGGSgABygGV6gMdygKaKgJoMMoAODBAAHjxIgOsMgLcMgIsMgGMMgMUMgDIMgEIMgMYMgGYMMYDyqoAyGYBWDBppxsQAgihEAKIDdEh5dkSOLvj9gxQARAAW+vwQjy4FHhkHR6eDMoBSpoTB-E5nJD1KCAfQZAAYMgHUGQCADIAqhiGgHaGQDnDIAphkA1wyjSazByAEwYYoBCO0AqgwyQBaDEj7ucCdMVIB-BhUgBYNQAQKnIAHIAcV2GS8APOlzukKer3en1cTEKnhQ5mFSCBFT8wQVICVDCg4UAFQyAS4ZAD8MOCAA">Playground</a></button>