TypeScript 泛型中 keyof 语法的使用


interface Person{
  name: string;
  age: number;
  gender: string;
}

class Teacher{
  constructor(private info: Person) { }
  // getInfo(key: string) {
  //   return this.info[key];
    /**
     * 这里报错是因为,不能保证这个 key 值就一定是 info 里面的 key
     * 比如随表传递 hello ,就会打印出 undefined
     * 所以需要保护机制,结合泛型 的 keyof
     */
  // }

  getInfo<T extends keyof Person>(key: T):Person[T] {
    return this.info[key];
  }
}

const teacher = new Teacher({
  name: 'sssssss',
  age: 18,
  gender: 'male'
})

const test = teacher.getInfo('age');
console.log(test);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM