interface P { name: string; age: number; gender: string;}class T { constructor(private info: P) {} getInfo(key: string) { return this.info[key] }}const t = new T({ name: 'pw', age: 18, gender: 'male'})const test = t.getInfo('name'); // 没有 if判断,test是 anyconsole.log(test);
interface P { name: string; age: number; gender: string;}class T { constructor(private info: P) {} getInfo<T extends keyof P>(key: T): P[T] { // T extends name === type T = name // T extends age === type T = age // T extends gender === type T = gender return this.info[key] }}const t = new T({ name: 'pw', age: 18, gender: 'male'})const test = t.getInfo('name'); // test 的类型判断是正确的了console.log(test);