创建-反应-应用--模板类型脚本-可以暂时禁用类型检查吗? [英] create-react-app --template typescript — is it possible to temporarily disable type checking?
问题描述
我正在使用一个带有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/14724418,https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html
这篇关于创建-反应-应用--模板类型脚本-可以暂时禁用类型检查吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!