typeScript阅读笔记-类型兼容性
Posted daijinjia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typeScript阅读笔记-类型兼容性相关的知识,希望对你有一定的参考价值。
- typeScipt的兼容性是基于结构子类型的。一般有两种类型结构类型和名义类型。具体的区别就是在基于名义类型的类型系统中,数据类型的兼容性或等价性是通过明确的声明和或类型的名称来决定的。而对于结构类型,它是基于类型的组成结构,且不要求明确地声明。
- ts的兼容检测基本规则就是如果一个x要兼容y,那么y至少要拥有与x的相同的属性,即x中的属性都能够在y中找到。这里只是基本准则,在有的情况下会有所不同。我们的变量赋值以及函数的传参检测都是这样来的。比如一个函数的参数是name:string,然后我们传入一个object也含有name并且类型是string,但是还有其他的属性,这样去传入参数也是不会报错的,因为它只会检测是否含有函数所需的参数并且类型也要相同。
- 比较两个函数的时候,参数的比较是不看名字同不同的,只看参数的类型,如果函数x的参数都能在y中找到,那么x就可以赋值给y,即有y=x。但是不能有x=y,我的理解就是这就像是我们使用的foreach函数一样,我们使用的时候可以不用一些参数,只有item就行,但是不能去多加参数。然后是对于函数的返回类型比较时,这时的函数就可以看成是一个变量,然后返回的值就是这个变量的值,所以这样的函数与函数直接的兼容规则就和基本规则一样了,多的可以赋值给少的,只要少的属性都能在多的里面找到。
- 在记一下类的兼容性,类具有静态部分和实例部分,在进行类与类的兼容检查时只是比较实例的部分,不会比较静态部分。然后对于私有属性和保护属性,这种比较要按照它们的定义来进行比较,私有属性的话就是说只能子类赋值给父类。
- 还有其他的类类兼容性比如在泛型中、枚举中等等。
参看:ts官方文档的类型兼容性
以上是关于typeScript阅读笔记-类型兼容性的主要内容,如果未能解决你的问题,请参考以下文章