keyof实现类型保护

62 阅读1分钟
interface Teacher {
  name: string;
  age: number;
  sex: 'male' | 'female'
}

var teacher: Teacher = {
  name: 'Yang',
  age: 30,
  sex: 'male',
}

function getInfo<T extends keyof Teacher>(teacher: Teacher, key: T) {
  return teacher[key];
}

getInfo(teacher, 'age')
getInfo(teacher, 'ddd') // Argument of type '"ddd"' is not assignable to parameter of type 'keyof Teacher'.