创建-反应-应用--模板类型脚本-可以暂时禁用类型检查吗? [英] create-react-app --template typescript — is it possible to temporarily disable type checking?

查看:16
本文介绍了创建-反应-应用--模板类型脚本-可以暂时禁用类型检查吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个带有TypeScrip的创建-反应-应用程序,它会在我每次运行该应用程序时使用"include": "/src"在我的前端文件夹中自动生成一个tsconfig,即使我删除或更改了该文件。

是否有方法在TS CRA中禁用类型检查(而不弹出)?

推荐答案

禁用类型检查

CRA使用Babel编译器

Babel是Flow、JSX和TypeScrip的第三方编译器,并将它们结合在一起。Babel不实现类型检查,CRA使用来自TypeScrip编译器的一些方法,以及来自TSLint的一些方法。因此,即使出现类型错误,Babel也可以编译代码,因为Babel看不到它。将以下内容添加到环境中: TSC_COMPILE_ON_ERROR=true

有关详细信息,请参阅CRA documentation

一个文件禁用

在文件开头使用// @ts-nocheck/* tslint:disable */(取决于CRA的版本)。

避免使用any类型

(&A) 此外,在TypeScrip中,当以这种方式定义类型时,类型可能是可选的。因此,如果您在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+)

可以通过在TypeScrip 2.6+中使用// @ts-ignore注释来禁用任何打字错误。例如:

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

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

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

没有区别吗?尝试使用以下规则:

选择ts-expect-error如果:

  • 您编写的测试代码实际上希望类型系统在操作中出错
  • 您希望修复程序很快就会出现,而您只需要一个快速的解决方法
  • 您正处于一个规模合理的项目中,其中有一个主动团队,希望在受影响的代码再次有效后立即删除抑制注释

选择ts-ignore如果:

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

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

这篇关于创建-反应-应用--模板类型脚本-可以暂时禁用类型检查吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆