我在我的代码库中发现了这个类型声明,顾名思义是关于非空数组:

type NonEmptyArray<T> = T[] & { 0: T }

它按预期工作:
const okay: NonEmptyArray<number> = [1, 2];
const alsoOkay: NonEmptyArray<number> = [1];
const err: NonEmptyArray<number> = []; // error!

问题:
  • 1 我无法理解 0 在这部分 { 0: T } 中代表什么。你能解释一下吗?
  • 2 与替代声明有什么不同?
  • type NonEmptyArray<T> = [T, ...T[]];

    最佳答案

    { 0: T }0 只是一个匹配数组第一个元素索引的键。由于在 javascript 数组中是对象的子类型,因此它工作得很好。我相信替代声明提供了相同的结果,但更简单,更容易理解。
    也许这只是与旧版本 typescript 一起使用的代码,在元组中传播类型是相对较新的。

    关于typescript - { 0 : T } in this type declaration? 是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60167086/

    10-12 14:00