为了账号安全,请及时绑定邮箱和手机立即绑定

在 TypeScript 中克隆对象数组

在 TypeScript 中克隆对象数组

沧海一幻觉 2023-03-18 16:14:05
我的界面中定义了一组如下所示的对象:myArray: [{    id: number;    item: string;    checked: boolean;}]我正在尝试使用以下语句克隆数组:let newArray = myArray.map(x => Object.assign({},x));当我尝试将新数组分配给我的原始数组时,出现以下错误:Type '{ id: number; item: string; checked: boolean; }[]' is not assignable to type'[{ id: number; item: string; checked: boolean; }]'.  Target requires 1 element(s) but source may have fewer看起来对象数组正在转换为数组对象。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

您遇到的问题在于 TypeScript 中的元组和列表类型之间的区别。考虑以下示例:

type AsTuple = [number];


type AsArray = number[];


let myArrayA: AsArray = [];

let myArrayB: AsTuple = []; // This one errors

为什么第二个错误?这是因为AsArray是一个数字数组,而AsTuple是一个元组,其中元组中的第一个(也是唯一一个)项目是一个数字。空数组不符合类型AsTuple;它必须是一个单项数组。


在您的示例中,您有:


myArray: [{

    id: number;

    item: string;

    checked: boolean;

}]

它定义myArray为一个元组类型——它可以有一个项目,这是一个对象。您可以通过将其设为数组类型来更正它:


myArray: {

    id: number;

    item: string;

    checked: boolean;

}[]



查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信