兼容性: 所谓的兼容性即能否把一个类型赋给另一个类型
在typescript解构化类型系统的基本规则是:
A要想兼容B,那么B至少具有与A相同的属性
函数的兼容性: 需要考虑形参个数和返回值类型
形参数量:
要看A是否能赋给B,那么A的每个参数类型必须在B中找到,注意是参数类型,名字不一样没关系
返回值类型:
类型系统中强制源函数的返回值类型必须目标函数返回值类型的子类型
可选的和rest参数:
可选的(预先确定的)和Rest参数(任何数量)都兼容
枚举的兼容性
枚举和数字类型相互兼容
来自不同枚举的枚举变量不兼容
类的兼容性
仅仅只有实例成员和方法会被比较,静态成员和构造函数不会被比较
私有的和受保护的必须来自同一个类
泛型的兼容性
仅当类型参数在被用到时,才会影响兼容性,即只有T在被成员使用时才不兼容
,如果未被实例化泛参,被视为any,不影响
类的泛型: 和类的兼容性一样