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