是否可以在使用TypeScript时禁用类型检查?我喜欢TypeScript的类,接口等,但对于我通常参与的较小的单人项目,我真的不需要类型检查,对于不太常见的库或最新版本的库,找不到现成的类型定义是一种痛苦。谢谢
发布于 2015-06-27 14:10:07
在TypeScript中,当以这种方式定义时,类型可能是可选的。
由于查找外部库的类型定义似乎是您遇到的最大难题,因此您可以为任何不想进行类型检查的变量创建环境定义:
declare var variableName: any;
例如,对于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 2.6+中使用// @ts-ignore
注释来禁用任何TypeScript错误。例如:
if (false) {
// @ts-ignore: Unreachable code error
console.log("hello");
}
这可能会导致使用编译器时出现意想不到的行为,因为它没有经过良好的测试。除非绝对必要,否则我建议不要使用这种方法。
用Babel实现变换
发布于 2019-11-23 02:13:26
在TypeScript 3.7中,如果文件以以下注释开头,将禁用类型检查:
// @ts-nocheck
如前所述,在以前的版本中,您可以通过在前一行上包含以下注释来禁用对单行的检查:
// @ts-ignore
发布于 2015-06-27 08:55:06
是。默认情况下,类型是可选的,除非在项目中启用了noImplicitAny编译器选项。
https://stackoverflow.com/questions/31086843
复制相似问题