TypeScript 编译器参数“skipLibCheck”的用法

2024-04-10

我一直在研究进一步的解释跳过库检查TypeScript 编译器参数来确定将此设置为的安全性true。我找到的最深入的解释如下:

新--skipLibCheck TypeScript 2.0 添加了一个新的 --skipLibCheck 编译器选项,该选项会导致跳过声明文件(扩展名为 .d.ts 的文件)的类型检查。当程序包含大型声明文件时,编译器会花费大量时间对已知不包含错误的声明进行类型检查,并且通过跳过声明文件类型检查可能会显着缩短编译时间。

由于一个文件中的声明可能会影响其他文件中的类型检查,因此指定 --skipLibCheck 时可能无法检测到某些错误。例如,如果非声明文件扩充了声明文件中声明的类型,则可能会导致仅在检查声明文件时报告的错误。然而,实际上这种情况很少见。

我知道您显然可以从编译器中获得性能优势,而不必键入被认为不包含错误的检查文件,但我已经看到此标志用于绕过编译器发出的与声明文件相关的错误问题。

使用此标志来解决这个问题肯定会降低应用程序类型的完整性吗?


简单地解释一下这个问题:

[启用skipLibCheck]肯定会降低应用程序类型的完整性吗?

我同意,是的,确实如此。但是,如果替代方案是无法编译的应用程序,那么它就成为一个方便的标志。

虽然 Typescript 本身已经相当成熟,但 Typescript 社区仍然相对年轻。有大量库可用的类型定义,甚至一些本机打字稿库,但它们可能由于各种原因而彼此不兼容。

您可以导入一个库,该库的类型是用比您想要的不那么严格的 tsconfig 构建的 - 当您尝试使用它时,您的编译器可能会抱怨。

您可能会发现两个库定义了相同的类型,但不兼容。我导入了一些库,它们为 Polyfill 提供了自己的类型Buffer,由于它们不兼容,我的整个应用程序将无法编译。

启用--skipLibCheck可以帮助解决这些问题。打开它会阻止 Typescript 对整个导入的库进行类型检查。相反,Typescript 只会针对这些类型对您使用的代码进行类型检查。这意味着只要您不使用导入库的不兼容部分,它们就可以正常编译。

长话短说,博士,是的,--skipLibCheck会降低类型检查的性能,理想情况下我们不会使用它。但并不是每个库都提供完美的类型,因此跳过它可能会很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 编译器参数“skipLibCheck”的用法 的相关文章

随机推荐