create-react-app --template typescript — 是否可以暂时禁用类型检查?

2024-03-25

我正在使用 TypeScript 开发一个 create-react-app,它会在我的前端文件夹中自动生成一个 tsconfig"include": "/src"每次运行应用程序时,即使我删除或更改文件。

有没有办法禁用 TS cra 中的类型检查(不弹出)?


禁用类型检查

CRA使用Babel编译器

Babel https://babeljs.io是 Flow、JSX 和 TypeScript 组合的第三方编译器。巴别塔不实现类型检查,CRA 使用 TypeScript Compiler 中的一些方法和 TSLint 中的一些方法。因此,即使存在类型错误,Babel 也可以编译代码,因为 Babel 看不到它。将其添加到环境中:TSC_COMPILE_ON_ERROR=true

欲了解更多详细信息,请参阅加拿大税务局 (CRA) 文档 https://create-react-app.dev/docs/advanced-configuration/#

一个文件禁用

Use // @ts-nocheck or /* tslint:disable */(取决于 CRA 的版本)位于文件的开头。

避免使用类型和使用any type

此外,在 TypeScript 中,以这种方式定义的类型可能是可选的。所以如果在tsconfig.json中使用则无法使用

{
   "compilerOptions": {
       ///...
       "strict": false
   }
}

由于您遇到的最大痛苦似乎是查找外部库的类型定义,因此您可以为您不想进行类型检查的任何变量创建环境定义:

declare var variableName: any;
// better in .d.ts files

例如,对于 jQuery 来说,它是declare var $: any;。然后你可以这样做:$("#test").myNonExistentFunction();如果你愿意的话。

或者,当使用 es2015 模块时,可以执行以下代码来允许导入库:

declare module "jquery" {
    var _temp: any;
    export = _temp;
}

速记环境模块声明 (TS 2.0+)

在 TS 2.0+ 中,禁用导入类型检查的更好方法是创建一个.d.ts在您的项目中创建文件并定义速记环境模块声明:

declare module "jquery";
// or use a wildcard
declare module "express-*"; // or use "*" to allow everything

这将允许您自由使用这些导入而无需类型检查:

import $ from "jquery";

$.something(); // ok at compile time, but will be an error at runtime

也就是说,在这种情况下采取的最佳路径是.d.ts在您的项目中创建一个文件,以根据您使用的内容逐步定义您所依赖的库的接口。

ts-忽略评论(TS 2.6+)

可以通过使用禁用任何 TypeScript 错误// @ts-ignoreTypeScript 2.6+ 中的注释。例如:

if (false) {
    // @ts-ignore: Unreachable code error
    console.log("hello");
}

@ts-expect-error评论(TS 3.9)期待错误比忽略错误更好、更安全、更稳定。请注意,它适用于下一个code行,这意味着您可以在代码和之间使用注释@ts-expect-error.

// @ts-expect-error
/* I will override error */
//
var num: string = 3;

没有不同?尝试使用这个规则:

Pick ts-expect-error if:

  • 您正在编写测试代码,您实际上希望类型系统在操作时出错
  • 您期望修复很快就会出现,并且您只需要一个快速的解决方法
  • 您所在的项目规模相当大,团队积极主动,希望在受影响的代码再次有效后立即删除抑制评论

Pick ts-ignore if:

  • 您有一个更大的项目,并且代码中出现了新的错误,并且没有明确的所有者
  • 您正在两个不同版本的 TypeScript 之间进行升级,并且一个版本中有一行代码错误,而另一个版本则没有。
  • 老实说,您没有时间来决定哪个选项更好。

资料来源:https://stackoverflow.com/a/31089657/14724418 https://stackoverflow.com/a/31089657/14724418, https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html

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

create-react-app --template typescript — 是否可以暂时禁用类型检查? 的相关文章

随机推荐

  • Windows 版 Github - ssh-agent.exe 使用高 CPU + 100% 磁盘?

    我刚刚在我的 Windows 8 1 计算机上安装了适用于 Windows 的 Github 它似乎工作正常 只是我的计算机性能急剧下降 看看任务管理器我看到ssh agent exe正在使用一个常数25 CPU 毫无疑问 100 是我的核
  • 是否可以检查您的系统上是否在 Rust 中定义了 C 宏?

    我知道 Rust 中的 libc 包包含许多在 Rust 中使用的 C 标准宏和函数 但它也声明它不关心系统之间的可移植性 我将一些大量使用 C 预处理器宏的代码从 C 移植到 Rust 并且仅在定义了给定宏的情况下才包含一些代码 在本例中
  • 检查 SQL 查询是否在 PDO 中执行[重复]

    这个问题在这里已经有答案了 在 mysql query 中 我们可以通过执行以下操作来检查查询是否已执行 query yourdbconnection gt fetch array mysql query SELECT FROM tbl n
  • Python使用GET从API检索多页数据

    我正在尝试使用Python 3requests get从中检索数据这一页 https api safecast org en US measurements locale en US 使用其 API 我有兴趣使用以下方法从所有页面检索数据A
  • 如何填写列表(类型)?

    我正在尝试验证输入的多维数组 我需要在将数据发送到准备好的语句之前验证数据类型 我正在做一个Function可用于检查从接收到的多维数组的数据类型WebMethodajax 调用 以多维数组作为参数和列表Types 作为另一个来检查列 我正
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

    目前 我的服务器上有一个使用 Ruby 运行的 Apple 推送通知 我想在 Erlang 中使用一个 因为我想使用一个主管来监视它 有人有任何代码可以帮助我吗 这是我的 Ruby 代码 我不喜欢当前实现的一件事是它似乎无法保持连接 它每天
  • 什么会导致 Valgrind 堆栈跟踪中出现奇怪的地址?

    这个问题与从 valgrind 输出中过滤掉垃圾 https stackoverflow com questions 34325305 filtering out junk from valgrind output 我正在尝试调试一个大型项
  • ResolveUrl 和 ResolveClientUrl 有什么区别?

    我一直在使用 ResolveUrl 在 ASP NET 文件中添加 CSS 和 Javascript 但我通常会看到 ResolveClientUrl 的选项 两者有什么区别 我什么时候应该使用 ResolveClientUrl Resol
  • C++无法打开源文件

    在使用 Visual Studio 2017 的 C 中 我将一些头文件复制到我的项目文件夹中 然后将它们添加到 c 中的 解决方案资源管理器 下 现在当我写的时候 include name h 它在包含下打印一个错误 并显示 无法打开源文
  • 嵌套类构造函数的可见性

    C 中有没有办法限制嵌套类的实例化 我想防止嵌套类从除嵌套类之外的任何其他类实例化 但允许从其他代码完全访问嵌套类 通常 我会为要向其他类公开的功能创建一个接口 然后将嵌套类设为私有并实现该接口 这样嵌套类定义可以保持隐藏 public c
  • Java 使用 Java 8 时间库将 UTC 转换为 PDT/PST

    我想使用内置的 Java 8 时间库将 UTC 转换为 PST PDT 我正在编写一个与 API 对话的程序 该 API 根据时间范围返回对象列表 例如 从某个日期时间创建 修改的对象 我的程序使用LocalDateTime并且该值始终采用
  • 将 docker 与 RDS (Prod) 一起使用,但对本地数据库设置感到困惑 (dev)

    我正在使用 Docker 设计一个 Rails web 应用程序 出于多种原因 我想在生产环境中使用 RDS 来实现其可配置性和耐用性 而不是基于 Docker 容器的数据库 这是一个要求 我意识到我可以配置数据库 yml指向 Prod 环
  • 如何通过Prefix获取所有data-*属性

    我有一个这样的标签 a href Link a 当我点击这个链接时 我有一个这样的功能 ssd click function event var customData Code to get all the custom data in f
  • 什么会导致 php 的 strtotime 对 2099 年的日期不起作用?

    我有三台服务器 在所有三台服务器上执行以下操作 echo strtotime 2099 12 31 echo strtotime date Y m d gets me 服务器 1 php 5 3 8 64位 4102376400 13284
  • Swift:将视图从堆栈视图带到前面

    我得到了一个堆栈视图 其中包含以下视图 1 2 3 4 和 5 寻找一种方法将 Image View4 从 Stack 视图中的 view4 移至所有其他视图之上 我需要这个的原因是因为我将 Image View4 移动到 view3 中的
  • 如何在拖动过程中修复 jQuery UI 对话框的大小?

    这是一个简单的对话框 如下代码所示 每当拖动对话框时 其高度就会减小 当我设置对话框的 ressized false 时 它 的高度值甚至会改变 最后我通过在 DragStop 事件处理程序中重新更新对话框高度来修复它 我发现有人报告了类似
  • 如何确定当前 Mono 运行时的构建和安装版本?

    我想确定当前 Mono 运行时的构建和安装版本 如何在 Git 中正确调用它 dmcs version Mono C compiler version 2 9 0 0 但这绝对是不够的 XSP ASP NET 错误页面提供了更多信息 版本信
  • PIP 安装 Numpy 抛出错误“ascii 编解码器无法解码字节 0xe2”

    我在一台新构建的计算机上新安装了 Ubuntu 我刚刚使用 apt get 安装了 python pip 现在 当我尝试 pip install Numpy 和 Pandas 时 出现以下错误 我在 SO 和 Google 上的很多地方都看
  • 如何导入其他 TypeScript 文件?

    使用 vs net 的 TypeScript 插件时 如何使一个 TypeScript 文件导入其他 TypeScript 文件中声明的模块 file 1 module moo export class foo file 2 what go
  • create-react-app --template typescript — 是否可以暂时禁用类型检查?

    我正在使用 TypeScript 开发一个 create react app 它会在我的前端文件夹中自动生成一个 tsconfig include src 每次运行应用程序时 即使我删除或更改文件 有没有办法禁用 TS cra 中的类型检查