在Typescript

时间:2018-01-11 20:41:05

标签: angular typescript

通过解构对象并分配变量

,is代码可以正常工作
const { allowNegative, decimal, precision, prefix, suffix, thousands } = this.options;

但是当我尝试使用this运算符时,它会抛出一个错误:

`{ this.tabConfig, this.searchUiConfig, this.gridUiConfig } =  CONFIG;`

其中 CONFIG 是JSON。在赋值运算符(=)上 [ts]声明或语句预期 时出错。

有没有比这更好的方法:

 this.tabConfig = CONFIG.tabConfig;
 this.searchUiConfig = CONFIG.searchUiConfig;
 this.gridUiConfig = CONFIG.gridUiConfig;

1 个答案:

答案 0 :(得分:7)

您可以使用以下语法执行此操作:

({ prop: this.prop } = obj);

我在这里使用deep object matching

var obj = { propIwantFromObj: 'foo' };
var { propIwantFromObj: whereToStoreValue } = obj;

在左侧部分,您将说明要从对象获取哪个属性,在右侧,您将说明存储值的位置。因此,在这种情况下,将创建一个名为whereToStoreValue的新变量,其值为foo

var obj = { propIwantFromObj: 'foo' };
var whereToStoreValue = obj.propIwantFromObj;

可用于在this(或其他对象)上存储值,但由于.,您需要将其括在括号内。出于某种原因,这个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);