我们有一个大型 Typescript 项目,我们正在尝试改进增量编译时间,这有时会占据开发时间。对于很多文件,如果我们遵循所有的import语句,我们将到达项目的大部分文件,因此增量编译可能会非常慢。我们正在努力减少此图中的连接性,但我们也注意到,对于我们在 Typescript 文件中所做的一些更改,导入文件不会使用 --incremental 或在监视模式下重新编译。
例如,更改类中的方法主体(但不更改其签名)不会导致重新编译导入该类的文件。此外,将(软和硬)私有字段添加到类或文件本地声明似乎不会导致重新编译导入程序。
但是,我们注意到,当使用 mixin 模式 ( https://www.typescriptlang.org/docs/handbook/mixins.html ) 时,对 mixin 类的任何更改都会导致重新编译所有导入器,甚至添加硬私有字段。似乎使用导入/导出类型对依赖项没有任何影响,但我们却没有找到相关文档。
如果增量编译,是否有正式的文档说明什么构成了依赖项?这个依赖图是否可以从编译器(或增量编译输出)获得?更实际的是,有没有一种方法可以在不创建私有字段和方法实现的编译依赖项的情况下使用 mixin?我们只能通过为所有涉及的类引入接口来解决这个问题,但这非常麻烦并且会导致其自身的问题。似乎不可能将项目划分为子项目并使用项目引用,因为在任何这样的划分中我们都会得到循环依赖。
为了进行 strictNull 检查,我们尝试按照建议逐步将它们引入我们的代码,但是将一个文件添加到检查文件列表中也会添加它传递导入的所有文件(或者看起来如此)。是否有此处使用的依赖关系的正式文档?它与增量编译的相同吗?