interface是专用于定义对象类型的(适用性单一)
type可定义多种数据类型(适用性广)
- interface 定义类型:(没有‘=’号)
interface Person {
name: string;
age: number;
sayHello(): void;
}
- interface 继承:(extends)
interface Student extends Person {
grade: number;
study(): void;
}
- type 定义类型:(有‘=’号)
type Animal = {
name: string;
age: number;
makeSound(): void;
};
- type 实现继承功能:
type Dog = {
breed: string;
bark(): void;
} & Animal;
type Cat = {
color: string;
meow(): void;
} | Animal;
在最后一个例子中:
Dog
类型使用&
操作符继承了Animal
类型的属性和方法,同时又添加了自己的属性和方法。Cat
类型使用|
操作符定义了一个联合类型,它可以是Animal
类型,也可以是一个包含color
和meow()
方法的对象类型。
需要注意的是,在使用 &
和 |
操作符时,前后必须都是 type
定义的类型,不能混用 interface
和 type
。