【问题标题】:How to perform a destructuring assignment of a javascript object to already declared variables inside the scope of a class如何对类范围内已声明的变量执行 javascript 对象的解构赋值
【发布时间】:2021-05-09 02:50:56
【问题描述】:

我需要你的帮助,因为我正在尝试在已在类范围内声明的变量中对 javascript 对象进行解构赋值...即,我需要使用 {this.property, ... }

({ this.baseINSS,
  this.baseIRPF,
  this.discountINSS,
  this.dependentesDiscount,
  this.discountIRPF,
  this.netSalary } = calculateSalaryFrom(element.target.value, Number(dependentes)));

上面提到的函数calculateSalaryFrom()会返回

{baseINSS: "9876",
baseIRPF: 9162.9,
dependentesDiscount: 0,
discountINSS: 713.1,
discountIRPF: 1650.44,
netSalary: 7512.459999999999,
percentageDependentes: "0.00",
percentageINSS: "7.22",
percentageIRPF: "16.71",
percentageSalary: "76.07"}

我收到了error TS1005: ':' expected.({ this.baseINSS,... 顺便说一句,我正在使用 angular 和 typescript

【问题讨论】:

    标签: javascript class object this destructuring


    【解决方案1】:

    没有冒号的对象解构只能用于有效的独立标识符。例如

    ({ this.baseINSS } = someObj);
    

    不起作用,因为 someObj 的属性不是 this.baseINSS - 它只是 baseINSS

    虽然您可以在解构时重命名属性:

    ({ baseINSS: this.baseINSS, discountINSS: this.discountINSS } = calculateSalaryFrom(...
    

    这会重复。

    解构在这里不能很好地工作。而是迭代一组属性名称。

    const obj = calculateSalaryFrom(element.target.value, Number(dependentes)));
    const props = ['baseINSS', 'baseIRPH', ...] as const;
    for (const prop of props) {
      this[prop] = obj[prop];
    }
    

    【讨论】:

    • ……或者只使用Object.assign
    • 这将附加 所有 属性,而不仅仅是 OP 想要的 - 例如 percentageDependentes 应该被排除在外
    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2020-02-03
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多