在 TypeScript 中,type 和 interface 都可以用来定义一个类型。它们的异同点如下:
相同点:
- 都可以用来定义一个类型
- 可以扩展其他类型
不同点:
- type 可以定义基本类型、联合类型、元组和函数等类型;interface 只能定义对象类型。
- type 只能定义一次,如果多次定义会覆盖之前的定义;interface 可以定义多次,最终会被合并。
- type 可以使用 typeof 操作符获取一个变量的类型;interface 不能使用这种方式。
下面是一个使用 type 定义类型的示例:
type User = {
name: string;
age: number;
gender: 'male' | 'female';
sayHello: (message: string) => void;
}
const user: User = {
name: 'Jack',
age: 20,
gender: 'male',
sayHello: (message: string) => console.log(`Hello, ${message}!`)
};
下面是一个使用 interface 定义类型的示例:
interface User {
name: string;
age: number;
gender: 'male' | 'female';
sayHello: (message: string) => void;
}
const user: User = {
name: 'Jack',
age: 20,
gender: 'male',
sayHello: (message: string) => console.log(`Hello, ${message}!`)
};
从上面的示例中可以看出,使用 type 和 interface 定义类型是非常类似的,主要区别在于 type 可以定义更多种类的类型,而 interface 可以被合并。在实际开发中,可以根据具体情况选择使用哪种方式来定义类型。