在 TypeScript 中,extends
是一个关键字,用于表示类型的继承或约束关系。它主要用于以下两个方面:
- 类型继承:
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
关键字进行泛型约束,可以确保传入的类型满足特定要求,以便进行进一步的操作。
interface Lengthwise { length: number; } function loggingIdentity<T extends Lengthwise>(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 中用于表示类型的继承关系和约束关系,它允许子类型继承父类型的特性,并对泛型类型进行约束限制。