要件
- function の引数を Object 化
- 引数のデフォルト値を指定したい
- Objectの property を個別に default 化したい
結論
sample.js
// default 値 を纏めた Object
const DEFAULT_ARGS = {
name: "hoge",
value: "fuga",
flag: true,
}
// 引数の default 値を Object に指定
module.exports = ( args = DEFAULT_ARGS ) => {
// default <= args 方向に差分をコピーする
args = {
...DEFAULT_ARGS,
...args,
}
return args
}
使用例
expample.js
const sample = require("./sample.js");
let args;
// 引数なし
args = sample();
console.log(args.name, args.value, args.flag); //-> hoge, fuga, true
// 引数 空オブジェクト
args = sample({});
console.log(args.name, args.value, args.flag); //-> hoge, fuga, true
// 引数 オブジェクトのプロパティを1つ指定
args = sample({name: "aaa"});
console.log(args.name, args.value, args.flag); //-> aaa, fuga, true
// 引数 オブジェクトのプロパティを2つ指定
args = sample({name: "aaa", value: "bbb"});
console.log(args.name, args.value, args.flag); //-> aaa, bbb, true
// 引数 オブジェクトのプロパティを3つ指定
args = sample({name: "aaa", value: "bbb", flag: false});
console.log(args.name, args.value, args.flag); //-> aaa, bbb, false
以上