TypeScript 3.3
然而,上例中,FruitEater
和ColorConsumer
应该都可以使用"orange"
,并返回number
或string
。
在 TypeScript 3.3 里,这个错误不存在了。
TypeScript 3.3,这些签名的参数被连结在一起构成了一个新的签名。
这个新行为仅在满足如下情形时生效:
- 联合类型中最多有一个类型有泛型签名。
这意味着,像map
这种操作number[] | string[]
的方法,还是不能调用,因为map
是泛型函数。
另一方面,像就可以调用,因为它不是泛型函数,但在noImplicitAny
模式可能有些问题。
在合复合工程中增量地检测文件的变化 --build --watch
TypeScript 3.0 引入了一个新特性来按结构进行构建,称做“复合工程”。 目的是让用户能够把大型工程拆分成小的部分从而快速构建并保留项目结构。 正是因为支持了复合工程,TypeScript 可以使用--build
模式仅重新编译部分工程和依赖。 可以把它当做工作内部构建的一种优化。
TypeScript 2.7 还引入了--watch
构建模式,它使用了新的增量”builder”API。 背后的想法都是仅重新检查和生成改动过的文件或者是依赖项可能影响类型检查的文件。 可以把它们当成工程内部构建的优化。
在 3.3 之前,使用--build --watch
构建复合工程不会真正地使用增量文件检测机制。 在--build --watch
模式下,一个工程里的一处改动会导致整个工程重新构建,而非仅检查那些真正受到影响的文件。