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);