簡體   English   中英

無法將帶有類型字段的 object 推送到數組(Typescript 錯誤)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM