我一直在研究skipLibCheck TypeScript编译器参数的进一步解释,以确定将其设置为true的安全性.我发现最深入的解释如下:

新的——skipLibCheck

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

我知道,编译器不必键入被认为不包含错误的判断文件,这显然有助于提高性能,但我看到这个标志被用来绕过编译器发出的与有问题的声明文件相关的错误.

当然,使用这个标志来绕开它会降低应用程序输入的完整性吗?

推荐答案

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

当然[启用skipLibCheck]会降低应用程序输入的完整性吗?

我同意,是的,的确如此.然而,如果替代方案是一个不编译的应用程序,那么它将成为一个方便的标志.

虽然Typescript本身已经相当成熟,但Typescript社区仍然相对年轻.有很多库,甚至一些原生typescript库都可以使用类型定义,但由于各种原因,它们之间可能不兼容.

您可以导入一个库,它的类型是使用比您希望的更不严格的tsconfig构建的——当您试图使用它时,编译器可能会对此抱怨.

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

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

tl;dr,是的,--skipLibCheck降低了类型判断,理想情况下我们不会使用它.但并不是每个库都提供完美的类型,所以跳过它可能会很好.

Typescript相关问答推荐

如何将http上下文附加到angular中翻译模块发送的请求

React-Native运行方法通过监听另一个状态来更新一个状态

Angular 17 -如何使用新的@if语法在对象中使用Deliverc值

如何创建泛型类型组件来使用React Native的FlatList或SectionList?'

在Typescribe中,extends工作,但当指定派生给super时出错""

如何在TypeScrip面向对象程序设计中用方法/属性有条件地扩展类

在键和值为ARGS的泛型函数中未正确推断类型

contextPaneTitleText类型的参数不能分配给remoteconfig类型的关键参数'""'''

迁移到Reaction路由V6时,获取模块Reaction-Router-Dom';没有导出的成员RouteComponentProps错误

在Reaction-Native-ReAnimated中不存在Animated.Value

如何在深度嵌套的Reaction路由对象中隐藏父级?

使用动态输出类型和泛型可重用接口提取对象属性

为什么我的动画状态在组件实例之间共享?

找不到财产的标准方式?

打字脚本中的模块化或命名空间

编剧- Select 下拉框

VUE 3类型';字符串';不可分配给类型';参考<;字符串&>

如何以类型安全的方式指定键的常量列表,并从该列表派生所挑选的接口?

通过辅助函数获取嵌套属性时保留类型

如何从联合类型推断函数参数?