interface是接口,type是类型,本身就是两个概念。只是碰巧表现上比较相似。希望定义一个变量类型,就用type,如果希望是能够继承并约束的,就 用interface。如果你不知道该用哪个,说明你只是想定义一个类型而非接口,所以应该用type。
在 TypeScript
中,interface
和 type
主要用于类型的声明,它们的相同点以及区别如下:
相同点
都可以描述一个对象或者函数
1 | /* interface */ |
1 | /* type */ |
都可以进行拓展
1 | /* interface */ |
1 | /* type */ |
区别
type 可以声明基本类型别名,联合类型,元组类型,而 interface 不可以
1 | /* 基本类型 */ |
interface 可以进行类型合并,而 type 不可以
1 | interface Cloner { |