繁体   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