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”的用法 的相关文章

  • Typescript 类似断言的类型保护

    这是否可以在没有限制的情况下限制类型if通过函数调用never返回例如undefined like assert在打字稿中 示例代码 interface Foo bar void function getFoo Foo undefined
  • 如何向 React 中的 onChange 函数传递附加参数

    所以 我遇到了这个问题 我这里有这种类型的元素 显然在更改输入时有事件 是否可以像这样传递参数并访问事件 如果是这样 我该怎么办 this function accepts two other params index stringValu
  • Typescript 参数 - 对象的通用数组和对象键的数组(部分)

    我想要一个接受对象数组和一些对象键数组的方法 该方法将返回对象值数组的数组 但仅返回选定键的数组 data firstName Jane lastName Doe firstName John lastName Doe fields fir
  • 从字符串变量导入模块

    我需要从内存变量导入 JavaScript 模块 我知道这可以使用SystemJS and Webpack 但我找不到一个好的工作示例或文档 文档主要讨论 js 文件的动态导入 基本上我需要像下面这样导入模块 let moduleData
  • TypeScript 源映射文件不适用于 Chrome

    我正在尝试在 Chrome 中进行 TypeScript 源调试 但遇到了两个特定且可能相关的问题 第一个是由 TypeScript WebEssentials 编译器生成的注释 该注释应该标识源映射文件的位置 如下所示 sourceMap
  • 如何在 Durandal 中为我的 shell 视图模型使用类?

    我正在查看 Hot Towel 模板 并试图让它在 TypeScript 中工作 但我在转换 shell 视图模型时遇到了问题 我正在尝试将其转换为 TS 对我来说更有意义的是它应该是一个类 而不是简单地导出如图所示的函数here http
  • 接口对象无法扩展 Record

    为什么接口无法扩展Record interface Data a string Data extends Record
  • 在 TypeScript 中使用最新的 JavaScript 功能,例如 ES2018

    我尝试搜索有关其配置的 TypeScript 文档 但似乎找不到这个简单问题的答案 简单地说 如何配置 TypeScript 编译器以便它知道我们正在使用哪些 JavaScript 功能集 例如 ES2019 发布了 我想 哦 想给我一些
  • 如何让 Angular 2 选择动态添加的 routerLink 指令

    正如所见这个笨蛋 https plnkr co edit K906Y8KtkgYVgAIsCLqE p preview 我动态地将 HTML 添加到我的一个元素中 这可以归结为 Component selector my comp temp
  • typescript 类型最大递归限制为 9

    我终于成功创建了一个通用类型 它为我提供了 json 键列表 值的所有可能组合 我什至准备了一种限制递归的方法 type EditAction
  • TypeScript 通过值类型缩小可索引类型的键范围

    假设我们有一个通用的可索引类型 我如何才能仅检索其值的类型以便能够缩小到仅某些键 imagine check is a function and its second argument only allows the property a
  • TypeScript 和 Chrome 通知

    我正在构建一个 Chrome 应用程序 该应用程序是用 TypeScript Angular2 编写的 我想推送通知 这是代码 import Injectable from angular2 core Injectable export c
  • TypeScript如何在每个文件中声明全局变量?

    我喜欢定义一个全局可用的助手 global p console log bind console 所以我可以使用p some message 代替console log some message 但 TypeScript 抱怨说p未定义 有
  • nextjs/image 中属性“src”的类型不兼容

    我正在使用 React dropzone 在我的简单应用程序中上传多图像 为了显示要删除的图像类型 我使用 TypeScript 创建了一个单独的组件 但 Next js 图像 src 显示错误 如类型 src string alt str
  • typescript 中的重载签名和实现签名

    我正在阅读 Typescript 手册 我很难理解为什么以下代码片段有错误消息 function fn x string void function fn vo Expected to be able to call with zero a
  • 从 Angular 6 中的 html 导出 Pdf

    我想从 Angular 6 中的 html 导出 pdf 所以 我正在使用jspdf图书馆 但我不能给出颜色和背景颜色等样式 我怎样才能实现这个目标 如果有其他免费图书馆jspdf 我可以用它 您可以从下面的链接查看演示 DEMO http
  • Angular8 firebase配置错误'@angular/fire/angularfire2'

    使用 firebase 配置 Angular 后尝试 ng 服务 时 出现错误 尽管我用谷歌搜索了这个错误消息但找不到任何东西 从错误信息来看 这个问题与库本身有关 user user MacBookPro post ng serve 10
  • Angular 2发送数组另一页

    我正在使用 Angular 开发天气应用程序 我是 Angular 的新手 我想带上我选择的城市的天气信息 但我无法将数据发送到第二页 哪里有问题 预先感谢您的帮助 export class ForecastComponent implem
  • 如何在 Angular httpClient 拦截器中使用异步服务

    使用Angular 4 3 1和HttpClient 我需要将异步服务的请求和响应修改为httpClient的HttpInterceptor 修改请求的示例 export class UseAsyncServiceInterceptor i
  • 替换打字稿中字符串中字符的所有实例?

    我正在尝试用 x 字符替换电子邮件中的所有句号 例如 电子邮件受保护 cdn cgi l email protection 将变为 myxemail emailxcom 电子邮件设置为字符串 我的问题是它不只是替换句号 而是替换每个字符 所

随机推荐