滄海一幻覺
2023-03-18 16:14:05
我的界面中定義了一組如下所示的對象:myArray: [{ id: number; item: string; checked: boolean;}]我正在嘗試使用以下語句克隆數(shù)組:let newArray = myArray.map(x => Object.assign({},x));當(dāng)我嘗試將新數(shù)組分配給我的原始數(shù)組時,出現(xiàn)以下錯誤: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看起來對象數(shù)組正在轉(zhuǎn)換為數(shù)組對象。
1 回答

墨色風(fēng)雨
TA貢獻1853條經(jīng)驗 獲得超6個贊
您遇到的問題在于 TypeScript 中的元組和列表類型之間的區(qū)別??紤]以下示例:
type AsTuple = [number];
type AsArray = number[];
let myArrayA: AsArray = [];
let myArrayB: AsTuple = []; // This one errors
為什么第二個錯誤?這是因為AsArray是一個數(shù)字?jǐn)?shù)組,而AsTuple是一個元組,其中元組中的第一個(也是唯一一個)項目是一個數(shù)字??諗?shù)組不符合類型AsTuple;它必須是一個單項數(shù)組。
在您的示例中,您有:
myArray: [{
? ? id: number;
? ? item: string;
? ? checked: boolean;
}]
它定義myArray為一個元組類型——它可以有一個項目,這是一個對象。您可以通過將其設(shè)為數(shù)組類型來更正它:
myArray: {
? ? id: number;
? ? item: string;
? ? checked: boolean;
}[]
添加回答
舉報
0/150
提交
取消