在我希望通过分解来构造自我文档代码的同时,DRY希望这样做...
async function shampoo({ lather = true, rinse = true, repeat 2 } = {}) {
await api.dogWasherMachine(magicalArguments) // ???
// don't want to have to do this:
// api.dogWasherMachine({ lather, rinse, repeat })
// currenty arguments is {} and actual input is defined
}
我如何获得这些已定义的神奇论点?
参数没有定义默认输入,但是我该怎么做?
答案 0 :(得分:1)
不可能仅在参数中进行操作-进行必要的结构分解将所有属性提取到一个独立的命名变量中,而不会留下对原始对象的引用。您必须使用另一条语句来完成此操作,例如:
async function shampoo(param = {}) {
const defaultObj = {
lather: true,
rinse: true,
repeat: 2
};
await api.dogWasherMachine({ ...defaultObj, ...param });
}
答案 1 :(得分:1)
我使用解构赋值来自我文档化用作接口的可继承类。在构造上,我获得了智能感知的所有好处,并且在调用API时,一切都保持良好且干燥。
class washable {
constructor({ lather = true, rinse = true, repeat = 2 } = {}) {
this.lather = lather
this.rinse = rinse
this.repeat = repeat
}
}
class dog extends washable {
async shampoo() {
await api.dogWasherMachine(this)
}
}