【问题标题】:Destructuring different types in JS在 JS 中解构不同的类型
【发布时间】:2017-10-30 16:12:26
【问题描述】:

对于一个对象x

const x = {
 a: 'foo',
 b: () => { return 'bar' )
}

是否可以在一个步骤中解构 x 以将 ab 作为字符串?

{a, <something with b?>} = x
console.log(a, b) // 'foo bar'

在更广泛的范围内,我对如何干净地解构单个对象中包含的不同类型感到困惑

在现实世界中,a 是一个调用,b 是一个嵌套对象

const x = {
 a: c(), // returns an object
 b: {
   x: {...},
   y: () => {...}
 } // is an object
}

// is this even doable
{< some magic stuff >} = x
typeof a === typeof b //true

【问题讨论】:

  • 解构不能调用函数。
  • 解构赋值专门用于常规对象和数组,不适用于外来对象。此外,解构既不包括隐式也不包括显式类型转换。赋值的类型和对应的对象属性的类型总是相同的。这是一个机械过程。

标签: javascript ecmascript-6 destructuring


【解决方案1】:

AFAIK,只有property getter 才有可能:

const x = {
 a: 'foo',
 get b() { return 'bar' }
}

const {a, b} = x
console.log(a, b) // 'foo bar'

【讨论】:

  • 这不是我预期的答案,但它有效。虽然一开始我很犹豫,但使用 getter 实际上改善了我模块的整体结构。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-03
  • 2011-06-08
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多