【问题标题】:Clone an array using spread operator with Typescript使用带有 Typescript 的扩展运算符克隆数组
【发布时间】:2021-09-02 00:12:56
【问题描述】:

我正在开发一个 Angular 应用程序,我必须更新状态,将新项目添加到 数组。

这是状态界面

export interface IState{
  //other fields of the state,
  forces: IForce[] 
}

我要做的是向“forces”字段添加一个新的IForce,同时保留现有值。

这就是我在减速器中所做的:

 on(myAction, (state, {force}) => ({
    ...state,
    forces: [
      ...state.forces,
      force
    ]
  })) 

我收到此错误:

This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'

上线...state.forces

实现我的目标的正确方法是什么?

谢谢大家

【问题讨论】:

  • 阅读错误信息并按照其中描述的步骤进行操作
  • 这是一个版本问题尝试更新您的 Tslint 或您的 TS 版本
  • 我认为这取决于应用程序以 es5 为目标的事实。我无法更新 tslib,我正在寻找替代解决方案

标签: javascript arrays typescript state


【解决方案1】:

如果您不想更新,为什么不使用 concat 来避免该问题。 myArr = myArr.concat(newArr);

【讨论】:

    【解决方案2】:

    最简单的方法是使用包管理器安装和升级tslib,例如npm install tslib; npm update tslib.

    另一种方法是使用数组concat 方法(Doc)。

    on(myAction, (state, {force}) => ({
      ...state,
      forces: state.forces.concat([force])
    })) 
    

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2019-06-29
      • 2018-10-13
      • 2016-06-12
      • 2020-06-22
      相关资源
      最近更新 更多