1. interface Person {
    2. name: string
    3. age: number
    4. gender: string
    5. }
    6. class Teacher {
    7. constructor(private info: Person) {}
    8. getInfo<T extends keyof Person>(key: T): Person[T] {
    9. return this.info[key];
    10. }
    11. }
    12. const teacher = new Teacher({
    13. name: 'dell',
    14. age: 18,
    15. gender: 'male'
    16. });
    17. const test = teacher.getInfo('name');
    18. console.log(test);
    19. type Name = 'name'
    20. const abc: Name = 'hello' //error
    21. const abc: Name = 'name'