TypeScript 基础指南:接口的继承和实现

接口的继承和实现是 TypeScript 类型系统的重要组成部分。它们可以帮助开发者定义更加复杂和具体的类型,提高代码的可读性、可维护性和可扩展性。合理使用这些特性可以帮助构建出更加健壮和灵活的 TypeScript 应用程序。

部分
1
接口继承

接口可以通过使用 extends 关键字继承一个或多个其他接口。这样可以创建出更加复杂和具体的接口定义。

interface Animal {
  name: string;
}

interface Dog extends Animal {
  breed: string;
}

let myDog: Dog = {
  name: 'Buddy',
  breed: 'Labrador'
};

在这个例子中,Dog 接口继承了 Animal 接口,所以 Dog 类型的对象必须同时拥有 name 和 breed 属性。 接口继承还可以是多重继承:

interface Person {
  name: string;
}

interface Employee {
  jobTitle: string;
}

interface Manager extends Person, Employee {
  department: string;
}

在这个例子中,Manager 接口同时继承了 Person 和 Employee 接口,因此 Manager 类型的对象必须拥有 name、jobTitle 和 department 属性。

部分
2
接口实现

除了继承,接口还可以被类(Class)实现。当一个类实现一个接口时,它必须遵守接口定义的所有属性和方法。

interface Animal {
  name: string;
  makeSound(): void;
}

class Dog implements Animal {
  name: string;
  breed: string;

  constructor(name: string, breed: string) {
    this.name = name;
    this.breed = breed;
  }

  makeSound() {
    console.log('Woof!');
  }
}

在这个例子中,Dog 类实现了 Animal 接口,因此必须定义 name 属性和 makeSound() 方法。 接口实现还可以是多重实现:

interface Printable {
  print(): void;
}

interface Saveable {
  save(): void;
}

class Document implements Printable, Saveable {
  print() {
    console.log('Printing document...');
  }

  save() {
    console.log('Saving document...');
  }
}

在这个例子中,Document 类实现了 Printable 和 Saveable 两个接口,因此必须定义 print() 和 save() 方法。