- typeScipt 的兼容性是基于构造子类型的。个别有两种类型构造类型和名义类型。具体的区别就是在基于名义类型的类型零碎中,数据类型的兼容性或等价性是通过明确的申明和或类型的名称来决定的。而对于构造类型,它是基于类型的组成构造,且不要求明确地申明。
- ts 的兼容检测根本规定就是如果一个 x 要兼容 y,那么 y 至多要领有与 x 的雷同的属性,即 x 中的属性都可能在 y 中找到。这里只是基本准则,在有的状况下会有所不同。咱们的变量赋值以及函数的传参检测都是这样来的。比方一个函数的参数是 name:string,而后咱们传入一个 object 也含有 name 并且类型是 string,然而还有其余的属性,这样去传入参数也是不会报错的,因为它只会检测是否含有函数所需的参数并且类型也要雷同。
- 比拟两个函数的时候,参数的比拟是不看名字同不同的,只看参数的类型,如果函数 x 的参数都能在 y 中找到,那么 x 就能够赋值给 y,即有 y =x。然而不能有 x =y,我的了解就是这就像是咱们应用的 foreach 函数一样,咱们应用的时候能够不必一些参数,只有 item 就行,然而不能去多加参数。而后是对于函数的返回类型比拟时,这时的函数就能够看成是一个变量,而后返回的值就是这个变量的值,所以这样的函数与函数间接的兼容规定就和根本规定一样了,多的能够赋值给少的,只有少的属性都能在多的外面找到。
- 在记一下类的兼容性,类具备动态局部和实例局部,在进行类与类的兼容查看时只是比拟实例的局部,不会比拟动态局部。而后对于公有属性和爱护属性,这种比拟要依照它们的定义来进行比拟,公有属性的话就是说只能子类赋值给父类。
- 还有其余的类类兼容性比方在泛型中、枚举中等等。
参看:ts 官网文档的类型兼容性