📅  最后修改于: 2023-12-03 15:35:24.292000             🧑  作者: Mango
在 TypeScript 中,我们经常使用 interface
和 type
来定义自定义类型。尽管它们的区别并不是很大,但它们确实有一些微妙的差异。
interface 定义了一个具有特定属性和方法的对象的结构。它只存在于 TypeScript 的编译期,最终会被编译成纯 JavaScript,不会存在在编译后的代码中。一个 interface 可以继承其他 interface、extending 类型和 implementing 类型。
interface 的语法如下(以定义一个 Person
数据类型为例):
interface Person {
firstName: string;
lastName: string;
age: number;
sayHello(): string;
}
其中,Person
对象必须包含 firstName
、lastName
和 age
这三个属性,以及一个方法 sayHello
,该方法返回一个字符串。
type 则是更加通用的类型定义方式。它类似于 interface,但可以定义更复杂的类型。type 也只存在于 TypeScript 的编译期,最终会被编译成纯 JavaScript,不会存在在编译后的代码中。type 可以定义联合类型、交叉类型、元组、函数类型等复杂的类型。
type 的语法如下(以定义一个 Name
数据类型为例):
type Name = {
firstName: string;
lastName: string;
};
比较 interface 和 type:
interface 和 type 是互相补充的,应当根据不同场景选择不同的方式。
在 TypeScript 中,interface 和 type 都可以用来定义自定义类型。interface 更加专注于定义对象的结构,并支持继承和扩展;type 更加通用,可以定义更多类型,也可以定义联合类型、交叉类型、元组、函数类型等。在不同的场景下,我们应选择使用不同的方式来定义自定义类型。