【问题标题】:TypeScript array with arbitrary minimum length N, which can be large具有任意最小长度 N 的 TypeScript 数组,可以很大
【发布时间】:2020-10-13 14:05:21
【问题描述】:

我想创建一个type,其中数组的最小长度为N。我看过这个TypeScript array with minimum length,但是当N很大时,我不想写出从0到N的类型,例如:

type ArrayTwoOrMore<T> = {
    0: T
    1: T
    ...
    N: T
}

我想知道是否有更简洁的方法来做到这一点?

【问题讨论】:

  • 如果你使用的是最新版本的TS,另外一个答案是type ArrayTwoOrMore&lt;T&gt; = [T, T, ...T[]],但是你仍然需要拼出所有成员,没有办法说大于N
  • 在 Typescript 中,您可以创建像 type Pair&lt;T, U&gt; = [T, U]type Tripple&lt;T&gt; = [T, T, T] 这样的类型
  • 不知道为什么我昨天没有想到这个,在 4.0 中这会更容易。 10x @IAMTHEBEST 让我想起了这个问题 :)

标签: typescript types typescript-typings


【解决方案1】:

您不能任意设置元组大小,但在 4.0 中,您将能够创建像 Typle5Tuple10 这样的类型并将其传播多次以更快地获得所需的类型:

type Tuple5<T> = [T, T, T, T, T]
type Tuple10<T> = [...Tuple5<T>, ...Tuple5<T>]
type Tuple50<T> = [...Tuple10<T>, ...Tuple10<T>, ...Tuple10<T>, ...Tuple10<T>, ...Tuple10<T>]
type Tuple100<T> = [...Tuple50<T>, ...Tuple50<T>]

let a: Tuple100<number> = [] // Source has 0 element(s) but target requires 100

Playground Link

我会质疑创建一个大小为 100 的元组是否合理。

注意:4.0 仍处于测试阶段,应于 2020 年 8 月发布

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2023-01-30
    • 2019-05-27
    • 2020-09-24
    • 2015-12-18
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多