Typescript TS:如何获取常量数组元素类型

Typescript TS:如何获取常量数组元素类型,typescript,Typescript,我将TS 3.4.5与const断言一起使用。如何检索声明的常量数组变量的元素类型 export type GetArrayElementType<T extends Array<any>> = T extends (infer U)[] ? U : never; export const MyConstArray = [ 'item1', 'item2', 'item3', ] as const; export type MyConstArrayItem

我将TS 3.4.5与const断言一起使用。如何检索声明的常量数组变量的元素类型

export type GetArrayElementType<T extends Array<any>> = T extends (infer U)[] ? U : never;

export const MyConstArray = [
  'item1',
  'item2',
  'item3',
] as const;

export type MyConstArrayItem = GetArrayElementType<typeof MyConstArray>;

我不完全确定如何提取项的类型信息,因为由于const断言,我的数组不再是数组类型,而是常量元组,因此,
GetArrayElementType
不能应用于它。

如果要使用条件类型,必须记住,
as const
生成只读数组。因此,这应该按照您的预期工作:

export type GetArrayElementType<T extends readonly any[]> = T extends readonly (infer U)[] ? U : never;

export const MyConstArray = [
  'item1',
  'item2',
  'item3',
  'item4',
] as const;

export type MyConstArrayItem = GetArrayElementType<typeof MyConstArray>;

这是一个打字错误还是为什么你有两次
item1
?你甚至在评论中自己做了标记:D()谢谢,是的,我刚刚发现了另一个问题,这就是我要找的;)
export type GetArrayElementType<T extends readonly any[]> = T extends readonly (infer U)[] ? U : never;

export const MyConstArray = [
  'item1',
  'item2',
  'item3',
  'item4',
] as const;

export type MyConstArrayItem = GetArrayElementType<typeof MyConstArray>;
export const MyConstArray = [
  'item1',
  'item2',
  'item3',
  'item4',
] as const;

export type MyConstArrayItem = typeof MyConstArray[number];