[英]Push object into nested Typescript array, get error: Cannot read property 'push' of undefined
[英]Cannot push object with typed fields to array (Typescript error)
Typescript 的新手,遇到了一個基本問題。 我想將對象推送到這樣的數組:
type SomeArray = [
{
id: string;
}
];
const someArray: SomeArray = [];
第一個問題是它不允許我使用空數組進行初始化。 我真的需要一個工會嗎? 即SomeArray = [...] | []
SomeArray = [...] | []
?
下一個問題是我無法將項目推送到它:
type SomeArray = [
{
id: string;
}
] | [];
const someArray: SomeArray = [];
someArray.push({ id: 'a' })
類型“字符串”不可分配給類型“從不”。(2322)
定義接受類型化 object 的數組的正確方法是什么?
您已將 SomeArray 定義為tuple ,而不是數組。 元組不僅可以指定它是一個數組,還可以指定它究竟有多少元素,以及每個索引的類型(不同的索引可能具有不同的類型)。 因此,在您的情況下,您已指定該數組中只有一個元素,這使得空數組和推送到該數組是非法的。
如果您想要一個包含 0 個或更多元素的數組,則需要將方括號放在之后,如下所示:
type SomeArray = { id: string }[];
我剛剛開始使用 TypeScript 並遇到了同樣的問題。 我有一個額外的問題,我要添加的屬性需要在 object 初始化之后動態定義。
我發現以下語法適用於推送到 TypeScript 中的對象:
let someArray = any[] = [] someArray.push({id: "a",anotherProperty: "b"}) someArray.push({aThirdThing:"b"})
這種方法的好處是您不必在定義數組時預測所有屬性,您可以即時完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.