How to map a tuple generic type to a union type?
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)
Expected type: 7 | string
You can index by number
instead of keyof T
. keyof T
will contain all keys of the tuple object which includes the length as well as any other array properties.
type NeededUnionType<T extends any[]> = T[number]; // Includes all the Array properties values
const value: NeededUnionType<[7, string]> = 2; // err value is 7 | string