在 TypeScript 中,type 和 interface 也有一些区别:
1. 语法:type 使用 `type` 关键字来定义类型别名,interface 使用 `interface` 关键字来定义接口。
2. 功能:type 可以创建任意类型的别名,包括基本类型、联合类型、交叉类型、函数类型等;interface 主要用于定义对象的形状,描述对象的属性和方法。
3. 可选属性:interface 可以定义可选属性,即属性名后面加上 `?` 符号;type 别名不支持可选属性的定义。
4. 合并声明:interface 支持合并声明,即可以多次声明同一个接口,编译器会将它们合并为一个接口;type 别名不支持合并声明。
5. 实现类:interface 可以被类实现,类可以通过 `implements` 关键字来实现接口;type 别名不能被类实现。
6. 扩展类型:interface 可以通过 `extends` 关键字来扩展其他接口;type 可以使用交叉类型 `&` 来扩展其他类型。
总体来说,type 主要用于定义类型别名,可以创建任意类型的别名;interface 主要用于定义对象的形状,描述对象的属性和方法。在实际使用中,可以根据具体需求选择使用 type 还是 interface。