为什么在Typescript中我不能创建一个泛型类型,将它的类型化数组转换为它的第一个元素的类型?请参见示例:
export type Single<T = any[]> = T[0];
// ^^^^
// Type '0' cannot be used to index type 'T'
有点像在数组上使用索引一样?
export const obj: Single<MyObject[]> = arr[0]
发布于 2020-09-02 16:24:48
该定义的问题在于,您的参数T
缺省为any[]
,但仍然可以设置为非数组值。您需要使用extends
关键字来确保T
仅限于数组类型:
type Single<T extends any[]> = T[0];
另请参阅:TypeScript Handboook - Generic Constraints
请注意,您可以重新添加= any[]
部分,以允许您使用Single
类型,而无需显式指定泛型。
type Single<T extends any[] = any[]> = T[0];
type NumberSingle = Single<number[]>; // number
type AnySingle = Single; // any
https://stackoverflow.com/questions/63709643
复制相似问题