操作符extends的作用是什么

在 TypeScript 中,extends 是一个关键字,用于表示类型的继承或约束关系。它主要用于以下两个方面:

  1. 类型继承:extends 关键字可以用于类、接口和类型别名的定义,表示一个类型继承自另一个类型。通过继承,子类型可以获得父类型的属性和方法,并且可以进行覆写或扩展。

  • class Animal {
        name: string;
        constructor(name: string) {
            this.name = name;
        }
        eat() {
            console.log(`${this.name} is eating.`);
        }
    }
    
    class Dog extends Animal {
        bark() {
            console.log(`${this.name} is barking.`);
        }
    }
    
    const dog = new Dog("Bobby");
    dog.eat(); // 继承自父类 Animal 的方法
    dog.bark(); // 子类独有的方法
    

    在上述示例中,Dog 类继承自 Animal 类,通过 extends 关键字建立了类之间的继承关系,使得 Dog 类拥有 Animal 类的属性和方法。

  • 泛型约束:extends 关键字也可以用于泛型参数的约束,限制泛型类型必须满足指定的条件。通过使用 extends 关键字进行泛型约束,可以确保传入的类型满足特定要求,以便进行进一步的操作。

  1. interface Lengthwise {
        length: number;
    }
    
    function loggingIdentity(arg: T): T {
        console.log(`Length of ${arg}: ${arg.length}`);
        return arg;
    }
    
    loggingIdentity([1, 2, 3]); // 数组长度满足泛型约束
    loggingIdentity("Hello"); // 字符串的 length 属性满足泛型约束
    loggingIdentity(123); // 错误,数字类型没有 length 属性
    

    在上述示例中,T extends Lengthwise 表示泛型参数 T 必须是满足 Lengthwise 接口的类型,即具有名为 length 的数值属性。通过使用 extends 关键字进行泛型约束,我们可以确保传入的类型满足特定的条件,从而在函数内部进行相应的操作。

总结起来,extends 关键字在 TypeScript 中用于表示类型的继承关系和约束关系,它允许子类型继承父类型的特性,并对泛型类型进行约束限制。

你可能感兴趣的:(前端)