无法将具有类型字段的对象推送到数组(Typescript错误)

时间:2020-01-01 06:47:00

标签: typescript

Typescript的新手,被困在一个基本问题上。我想将对象推送到这样的数组中:

type SomeArray = [
    {
      id: string;
    }
];

const someArray: SomeArray = [];

第一个问题是它不允许我用空数组初始化。我真的需要工会吗?即SomeArray = [...] | []

下一个问题是我can't push items to it

type SomeArray = [
    {
      id: string;
    }
] | [];

const someArray: SomeArray = [];

someArray.push({ id: 'a' })

“字符串”类型不能分配为“从不”类型。(2322)

定义接受类型对象的数组的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您已将SomeArray定义为tuple,而不是数组。元组不仅可以指定它是一个数组,还可以指定它到底将拥有多少个元素以及每个索引的类型(不同的索引可能具有不同的类型)。因此,在您的情况下,您已指定该数组中将仅包含一个元素,这将使空数组并将其推入数组是非法的。

如果要使用包含0个或多个元素的数组,则需要在方括号之后放置方括号,如下所示:

type SomeArray = { id: string }[];