打字稿:元组到联合类型

时间:2019-12-08 20:30:34

标签: typescript tuples typescript-generics union-types mapped-types

如何将元组通用类型映射为联合类型?

type NeededUnionType<T> = T[keyof T]; // Includes all the Array properties values

const value: NeededUnionType<[7, string]> = 2; // This should not be allowed (2 is the tuple length)

预期类型:7 |字符串

1 个答案:

答案 0 :(得分:0)

您可以通过number而不是keyof T进行索引。 keyof T将包含元组对象的所有键,其中包括长度以及任何其他数组属性。

type NeededUnionType<T extends any[]> = T[number]; // Includes all the Array properties values

const value: NeededUnionType<[7, string]> = 2; // err value is 7 | string 

Playground Link