TypeScript 接口


TypeScript 接口详解

什么是接口

接口可以看作是一种规范,它定义了一个类型所需遵守的结构和行为。在 TypeScript 中,接口是一个抽象的概念,它不会被编译成 JavaScript 代码,而只是在开发环境中进行类型检查。

接口的语法

在 TypeScript 中,声明接口使用关键字 interface。以下是一个声明了属性和方法的接口示例:

interface Person {
  firstName: string;
  lastName: string;
  age?: number;
  sayHello(): void;
}

如上所示,接口中可以声明必选和可选属性,也可以声明方法。需要注意的是,接口中的方法只有函数签名,不包含实现。

使用接口

一般情况下,接口会被用于描述函数和类的参数类型和返回值类型。如果一个函数或者类符合某个接口的结构,那么它就可以被称为“实现了”该接口。

例如我们定义了一个函数,参数类型为一个 Person 接口:

function printPerson(person: Person) {
  console.log(person.firstName + person.lastName);
}

那么我们就可以使用该函数来输出符合 Person 接口规范的对象中的信息:

const john: Person = {
  firstName: 'John',
  lastName: 'Doe',
  sayHello: () => console.log('Hello, I am John.'),
};

printPerson(john);

在类中也可以使用接口来定义属性和方法:

class Student implements Person {
  firstName: string;
  lastName: string;
  age: number;
  constructor(firstName: string, lastName: string, age: number) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }
  sayHello() {
    console.log(`Hello, I am ${this.firstName}.`);
  }
}

如上所示,需要注意的是,在实现接口时,必须满足接口中的所有属性和方法。

继承接口

接口也可以继承自其他接口,用于描述具有相似结构的类型。以下是一个声明了继承的接口示例:

interface Developer extends Person {
  languages: string[];
  writeCode(): void;
}

如上所示,Developer 接口继承自 Person 接口,并且额外声明了 languages 属性和 writeCode 方法。

总结

本文介绍了 TypeScript 中接口的基本语法和使用方法,包括声明属性和方法、实现接口、继承接口等。接口可以帮助开发者定义数据类型的规范和结构,并且在使用时进行类型检查,提高代码的可读性和可维护性。