如何为空数组定义TypeScript接口?

6

这个接口描述了我的回答数组 (IActivityAnswer[])。

export interface IActivityAnswer {
  createdAt: string;
  id: string;
  questionId: string;
  score: number;
  summary: string;
  title: string;
  commentCount?: number;
}

有些用户可能没有答案(因此他们会得到一个空数组)。我该如何定义一个空数组的类型?我希望在不使用任何类型时实现这个目标。


1
你想让数组具有什么类型?你打算如何使用它? - Tom Fenech
3
如果你不打算在其中存储任何东西,那么为什么还要有这个数组呢? - Andreas
这个问题有什么意义? - Jacopo Sciampi
1
欢迎来到 Stack Overflow!为了获得最佳结果,请查看有关如何提出好问题的文档和什么构成了 MCVE。 - jcalz
类似于 IActivityAnswer[]数组类型可以表示任意数量的 IActivityAnswer 元素,包括零个。除非您有一个使用案例需要在编译时知道数组是否为空,否则这可能就是您所需的全部内容。 - jcalz
显示剩余2条评论
2个回答

8
从 TypeScript 3.0 版本开始,你可以使用空元组类型,写作 []
const empty: [] = [];

然而,即使没有这个功能,我也不明白为什么你需要使用 any,因为你可以写出类似于以下代码的内容:

const empty = <never[] & {length: 0}>[];

建议使用空元组类型[],因为它提供了更强大的检查功能并且在误用时会提供更好的错误提示。

数组既定义了类型接口,但有时数组中可能没有任何元素,您对此有何想法? - Jen
1
你的第二个声明抛出了 Type 'undefined[]' is not assignable to type 'never[]'. - Patrick Roberts
@PatrickRoberts 抱歉,我忘记了强制类型检查会禁止从文字[]进行分配。 需要进行类型断言。 我已经相应地更新了答案。 - Aluan Haddad
另一种格式是:const answerArray: Array<IActivityAnswer> = []; - theman0123

3

您可以指定IActivityAnswer[],其类型定义如下:

包含IActivityAnswer对象的数组,或不包含IActivityAnswer对象的数组,即空数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接