如何从 Typescript 中的对象值数组生成类型

How to generate a type from an array of object value in Typescript

我有一系列这样的路线:

export const routes = [
  { name: 'Home', component: HomeScreen },
  { name: 'CreateProgram', component: CreateProgramScreen },
  { name: 'AddExercises', component: AddExercisesScreen },
]

我想从路由名称中以编程方式生成如下所示的类型别名:

type RouteNames = 'Home' | 'CreateProgram' | 'AddExercises'

键入数组 as const 这样它就不会自动变宽,然后你可以在它的类型上使用 [number] 得到所有对象类型的联合,然后访问 ["name"] 获取 name 属性.

的类型
export const routes = [
  { name: 'Home', component: HomeScreen },
  { name: 'CreateProgram', component: CreateProgramScreen },
  { name: 'AddExercises', component: AddExercisesScreen },
] as const;
type RouteNames = (typeof routes)[number]["name"];