我想创建一个 type
,其中数组的最小长度为 N。我看过这个 TypeScript array with minimum length ,但是当 N 很大时,我不想写出从 0 到 N 的类型,例如:
type ArrayTwoOrMore<T> = {
0: T
1: T
...
N: T
}
我想知道是否有更简洁的方法来做到这一点?
最佳答案
你不能做任意大小的元组,但在 4.0 中你将能够创建一个像 Typle5
或 Tuple10
这样的类型并将它传播多次以获得所需类型更快:
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
不过,我会质疑创建大小为 100 的元组是否明智。
注意:4.0 仍处于测试阶段,应于 2020 年 8 月发布
关于具有任意最小长度 N 的 TypeScript 数组,可以很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62535983/