通过解构对象并分配变量,代码工作正常,
const { allowNegative,decimal,precision,prefix,suffix,thousands } = this.options;
但是,当我尝试使用此操作符时,它会抛出一个错误:
`{ this.tabConfig,this.searchUiConfig,this.gridUiConfig } = CONFIG;`
其中CONFIG是JSON.错误是[ts]赋值运算符(=)上的预期声明或语句.
有没有比这更好的方法:
this.tabConfig = CONFIG.tabConfig; this.searchUiConfig = CONFIG.searchUiConfig; this.gridUiConfig = CONFIG.gridUiConfig;
解决方法
您可以使用以下语法执行此操作:
({ prop: this.prop } = obj);
我在这里使用的是deep object matching
var obj = { propIwantFromObj: 'foo' }; var { propIwantFromObj: whereToStoreValue } = obj;
在左侧部分,您将说明要从对象获取哪个属性,在右侧,您将说明存储值的位置.因此,在这种情况下,将使用foo值创建一个名为whereToStoreValue的新变量.
var obj = { propIwantFromObj: 'foo' }; var whereToStoreValue = obj.propIwantFromObj;
这可以用来存储这个(或其他对象)的值,但你需要将它包装在括号内,因为..由于某种原因,这个hack允许你使用..
如果你不使用括号,你会得到语法错误(它也不适用于纯JS).
例:
const CONFIG = { tabConfig: 1,searchUiConfig: 2,gridUiConfig: 3,}; class Foo { bar() { ({ tabConfig: this.tabConfig,searchUiConfig: this.searchUiConfig,gridUiConfig: this.gridUiConfig } = CONFIG); } } const foo = new Foo(); foo.bar(); console.log(foo.tabConfig); console.log(foo.searchUiConfig); console.log(foo.gridUiConfig);