在 TypeScript 中,interface 和 type 都用于定义自定义类型
区别:
语法:interface 使用 interface 关键字,type 使用 type 关键字。
可合并性:interface 可以定义多个同名的接口,并且 TypeScript 会将它们自动合并为一个。 type 不支持合并,如果定义多个同名的类型,会报错。
对象和函数类型:interface 主要用于定义对象类型,可以描述对象的结构和方法签名。type 可以定义对象类型、联合类型、交叉类型等,并且还支持更高级的类型操作。
实现和继承:interface 可以被类实现(implements)和接口继承(extends),而 type 不支持类的实现和继承。
可读性:interface 声明的类型在错误信息和文档中更易读,因为它们提供了更清晰的结构和描述。而type 定义的类型可能更适合用于复杂的类型操作和类型别名
interface 适用于定义对象的结构和方法,type 适用于定义更复杂的类型、联合类型和交叉类型