类型推论
-
当需要从几个表达式中推断类型时候,算法会考虑所有元素的类型,给出一个兼容所有候选类型的类型;当没有找到最佳通用类型时会使用联合类型
let zoo = [new Rhino(), new Elephant(), new Snake()]; // (Rhino | Elephant | Snake)[]
类型兼容性
-
描述类型的方式有结构类型和名义类型
- 结构性类型系统是基于类型的组成结构,且不要求明确地声明
- 名义(nominal)类型系统中,数据类型的兼容性或等价性是通过明确的声明和/或类型的名称来决定的
-
TypeScript里的类型兼容性是基于结构子类型的
interface Named { name: string; } class Person { name: string; } let p: Named; // OK, because of structural typing p = new Person();