我有一个工具来创建一个静态大小的数组:
export type StaticArray<T, L extends number, R extends any[] = []> = R extends {
length: L;
}
? R
: StaticArray<T, L, [...R, T]>;
我可以验证它的工作:
let myVar: StaticArray<number, 3>;
// ^? let myVar: [number, number, number]
然而,我想让它与sum类型一起工作,但我不确定它如何可能.我希望这个案子能有这样的结果:
let myVar: StaticArray<number, 3 | 2 | 1>;
// ^? let myVar: [number, number, number] | [number, number] | [number]
但我似乎不工作,因为我的StaticArray
类型停止在它看到的最小数字.