関数の引数や、クラスのコンストラクタとかでオプション系の値をオブジェクトで受け取るときに、いい感じに省略可能にする方法をよく忘れるのでメモ。
interface HogeFunctionOptions { optionFoo: string optionBar: string optionBuzz: string } const defaults = { optionFoo: 'default value', optionBar: 'default value', optionBuzz: 'default value', } function hogeFunction(options = {} as Partial<HogeFunctionOptions>) { const { optionFoo, optionBar, optionBuzz } = { ...defaults, ...options } // continue }
ポイントは3つ
組み込みのPartialで省略可能にする
スプレッド構文で上書き
キーが重複する場合は後ろの値(↓の例だとoptions)で上書きされる
{ ...defaults, ...options }
分割代入で必要なものだけ取り出し
オプションのオブジェクトのまま使うより明示的で好み
const { optionFoo, optionBar, optionBuzz }
プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発
- 作者:Boris Cherny
- 発売日: 2020/03/16
- メディア: 単行本(ソフトカバー)