发布于 2 周前 ,更新于 2 周前 typescript

TypeScript 取数组对象中所有元素的某个属性值作为类型

给定下面数组对象,从该对象中提取出 TNameTAge 两个类型

const students = [
  { name: 'Tom', age: 10 },
  { name: 'Jim', age: 12 },
  { name: 'Jack', age: 11 },
]

// 需要得到的类型:
type TName = 'Tom' | 'Jim' | 'Jack'
type TAge = 10 | 12 | 11
方法一
const students = [
  { name: 'Tom', age: 10 },
  { name: 'Jim', age: 12 },
  { name: 'Jack', age: 11 },
] as const // 注意这里使用了 `as const`

type TName = typeof students[number]['name']
type TAge = typeof students[number]['age']
方法二(泛型)
const students = [
  { name: 'Tom', age: 10 },
  { name: 'Jim', age: 12 },
  { name: 'Jack', age: 11 },
] as const // 注意这里使用了 `as const`

type Student<T, K extends string> = T extends Readonly<{ [key in K]: infer U }[]> ? U : never

type TName = Student<typeof students, 'name'>
type TAge = Student<typeof students, 'age'>
© 2016 - 2022 BY 禾惠 粤ICP备20027042号