質問: { name: { family: "鈴木", given: "花子" }, age: "ひみつ" }; // 次の二行は型チェックでコンパイル時にエラー displayWithDefault(hanako); displayWithObjType(hanako); ``` `displayWithDefault`はデフォルト値で型推論されて正しく型が指定されますが、デフォルト値が必須になってしまいます。`displayWithObjType`は正統派ですが、せっかくの分割代入が普通の引数への代入になってしまいます。 調査には、下記文献を参考にしました。 分割代入 - JavaScript | MDN Functions · TypeScript Documentation TypeScriptの型以外の動作はMDNにあるES2015以降の動作通りです。しかし、TypeScriptのFunctions(関数)に関するドキュメントには分割代入については書いていません。 その他、TypeScript 1.7 · TypeScript#Improved checking for destructuring object literalに分割代入でのデフォルト値により型推論がありましたが、型指定については見つけられませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) TypeScript 2.1.5 コンパイルオプションでstrictNullChecksは有効
回答: ん~。やるとしたらこんな感じでしょうか。 ``` function displayWithType({name, age }: {name: string, age: number}) { console.log(`${name}は${age}歳です。`); } ```