1.type(类型别名)
用来给一个类型起新名字,使用 type 创建类型别名。类型别名不仅可以用来表示基本类型,还可以用来表示对象类型、联合类型、元组和交集。
2.interface(接口)
接口是命名数据结构(例如对象)的另一种方式;与 type 不同,interface 仅限于描述对象类型。接口的声明语法也不同于类型别名的声明语法。
相同之处:
1.都可以用来定义对象和函数
2.都可以实现继承:type 和 interface 并不互斥。type 可以继承 interface,反之亦然。只是在实现形式上,稍微有些区别。
3.type和interface都支持扩展
区别:
1. type侧重于直接定义类型
2. type 还可以给一个或多个类型起一个新名称(当变量用)
3.type可以声明基本类型
type userName = string;
4.type可以声明元组类型
type Data = [number, string];
5.type可以通过typeof操作符来声明
type myType = typeof someObj;
6.type可以声明联合类型
type userMsg = string | number;
7.interface可以声明合并
如果是 type 的话,就会报重复定义的警告,因此是无法实现声明合并的
使用场景:
type的使用场景是:
一般定义基本或联合类型
一般定义元组类型
一般定义函数类型
定义映射类型
interface的使用场景是:
需要interface 重名会自动合并属性扩展的
定义对象数据结构