带解构的可选参数对象

时间:2018-03-11 15:56:16

标签: javascript ecmascript-6

如何使第二个参数可选并使用解构?

到目前为止,这有效,但有点难看。还有什么更好的吗?

const fn = (required, optional = {id: undefined, name: undefined}) => {
  const {id, name} = optional
  console.log(required, id, name)
}

fn('hello') // hello undefined undefined
fn('hello', {id: 'world'}) // hello world undefined
fn('hello', {name: 'world'}) // hello undefined world

我发现这是针对打字稿Optional deconstruction function parameter,但我不认为我可以在没有TS的情况下应用解决方案。

1 个答案:

答案 0 :(得分:2)

与您在ES6中找到的打字稿解决方案相同的方法也是如此:

function fn(required, {id, name} = {}) {
  console.log(required, id, name)
}

使用解构表达式作为默认参数的目标,而不是optional。此外,我已使用undefined删除了显式属性初始化,只使用空对象,因为默认值正常。