美文网首页
keyof语法结合泛型的用途

keyof语法结合泛型的用途

作者: 泡杯感冒灵 | 来源:发表于2022-04-14 22:01 被阅读0次
    如果有一个类,new的时候传入一个对象,想要通过index或者key值去获取对象里的某一项内容的时候,又想去推断出返回值的正确的类型,就可以通过keyof语法结合泛型的语法实现。注意:<T extends keyof Person>(key: T):Person[T]
    interface Person{
      name: string;
      age: number;
      gender: string;
    }
    
    // keyof 第一次循环
    // type T = 'name';
    // key: 'name';
    // Person['name'];
    
    // keyof 第二次循环
    // type T = 'age';
    // key: 'age';
    // Person['age'];
    
    // keyof 第三次循环
    // type T = 'gender';
    // key: 'gender';
    // Person['gender'];
    
    class Teacher {
      constructor(private info: Person) { }
      getInfo<T extends keyof Person>(key: T):Person[T] {
        return this.info[key];
      }
    }
    
    const teacher = new Teacher({
      name: 'yang',
      age: 20,
      gender: 'male'
    });
    
    const test = teacher.getInfo('name');
    console.log(test);
    
    原理就是 类型也可以是 一个字符串
    // 根据类型也可以是一个字符串,这个特性
    type NAME = 'name';
    const abc: NAME = 'name';
    const abc: NAME = 'hello'; // 报错
    

    相关文章

      网友评论

          本文标题:keyof语法结合泛型的用途

          本文链接:https://www.haomeiwen.com/subject/ahiasrtx.html