TypeScript - 可以禁用类型检查吗?

时间:2015-06-27 08:41:33

标签: javascript typescript

使用TypeScript时是否可以禁用类型检查?我喜欢TypeScript用于类,界面等但对于我通常参与的较小的一个人项目我真的不需要进行类型检查以及找不到常用库或其最新版本的现成类型定义的痛苦是一种痛苦。感谢

4 个答案:

答案 0 :(得分:7)

在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-ignore评论(TS 2.6 +)

可以通过在TypeScript 2.6+中使用// @ts-ignore条评论来禁用任何TypeScript错误。例如:

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

这可能会在使用编译器时导致意外行为,因为它没有经过良好测试。除非绝对必要,否则我建议不要这样做。

使用Babel转换

如果您不需要进行类型检查,则另一种方法是使用Babel。它支持TypeScript的语法(参见here)。

答案 1 :(得分:2)

在TypeScript 3.7中,如果文件以以下注释开头,则类型检查将被禁用:

// @ts-nocheck

如前所述,在以前的版本中,可以通过在上一行中包含以下注释来禁用对单行的检查:

// @ts-ignore

答案 2 :(得分:1)

是。默认情况下,类型是可选的,除非在项目中启用了noImplicitAny编译器选项。

答案 3 :(得分:0)

解决方案没有修复错误“不是模块” 它适用于最佳答案中提出的所有不同的替代方案。

相关问题