1、类型推论
2、类型兼容性
Typescript的类型兼容性是基于结构子类型。结构类型是一种只使用其成员来描述类型的方式。正好与名义类型形成对比(在基于名义类型的类型系统中,数据类型的兼容性或等价性是通过明确的声明和类型的名称来决定的。这与结构类型系统不同,它是基于类型的组成结构,且不要求明确的声明)
2-1、开始
2-2、比较函数
比较函数 -- 重载函数
2-3、枚举
2-4、类
类与对象字面量和接口差不多,但有一点不同:类有静态部分和实例部分的类型。
所以:比较两个类类型的对象时,只有实例的成员会被比较。静态成员和构造函数不再比较的范围内
实例成员 -- 受保护的成员
实例成员 -- 私有成员 与受保护成员一样。
2-5、泛型
因为Typescript是结构性的类型系统,类型参数仅在作为成员类型的一部分使用时,才会影响其结果类型。比如:
上面代码里,gene1和gene2是兼容的,因为它们的结构没有使用类型参数T,所以结果类型没有什么不同。再看下一个例子
在这里,泛型接口使用了类型参数,影响其结果类型,比较其兼容性就像非泛型类型一样,所以gene3和gene4不兼容
对于没指定泛型类型的泛型 参数时,会把所有泛型参数当成any比较。然后用结果类型进行比较,就像非泛型一样