Skip to content

07-ts泛型中的keyof ​

在做自己项目的时候用到了中在template 中使用v-for 遍历渲染, ts编译会报一些变量没有定义的问题, 这就可以定义一个函数使用keyof

typescript
function pluck<DataType, Key extends keyof DataType>(data: DataType, key: Key): DataType[Key] {
  return data[key]
}
const pluck1 = {
  time: '2022',
  name: 'pluck'
}
console.log(pluck(pluck1, 'name'))
console.log(pluck(pluck1, 'time'))


interface BaseEvent {
  name: string
  age: number
}
interface EventMap {
  addToCard: BaseEvent & { old: boolean },
  check: BaseEvent
}
function sendEvent<Key extends keyof EventMap>(key: Key, data: EventMap[Key]): void {
  console.log(key, data)
}
sendEvent('addToCard', {
  name: 'pp',
  age: 12,
  old: false
})
sendEvent('check', {
  name: 'aa',
  age: 62,
})