在 TypeScript 中,接口(interface)是一种强大的方式来定义代码中的合同。它用于描述对象的结构,表明对象应该具有哪些属性和方法,以及它们的类型。
接口是一个非常有用的抽象工具,用于确保对象符合特定的形状或结构。它们可以用于描述函数、类、数组和对象字面量的结构。
接口示例
下面是一个简单的示例,演示了如何使用接口来描述一个对象的结构:
interface Person {
firstName: string;
lastName: string;
age?: number; // 问号表示该属性是可选的
}
function greet(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
const user: Person = {
firstName: "John", lastName: "Doe" };
console.log(greet(user)); // 输出 "Hello, John Doe"
在上面的代码中,Person
接口定义了一个人应该具有的属性:firstName
和 lastName
,它们都是字符串,以及一个可选的 age
属性。
接口和类型别名
虽然接口主要用于描述对象的形状,但在 TypeScript 中还可以使用类型别名(使用 type
关键字)来达到类似的效果。然而,接口和类型别名之间有一些重要的区别:
- 接口可以被扩展和实现(使用
extends
和implements
关键字)。 - 接口可以声明多次,并将所有声明合并为一个。
- 类型别名更灵活,可以表示任何类型,不仅仅是对象字面量。
通常,如果你要描述对象字面量的结构,最好使用接口。如果你需要表示联合类型、交叉类型等更复杂的结构,则可以使用类型别名。