typescript - 如何使用 noImplicityAny 和不使用 allowJs 在 TS 中导入 JS

标签 typescript webpack babeljs

我正在使用 Webpack 和 @babel/typescript 来编译一个混合的 TypeScript 和 JavaScript 项目。

我正在使用 --noImplicitAny 来鼓励利用打字。

我没有使用 --allowJs,因为我的项目太大了,它会阻塞 TypeScript 编译器,并且会破坏 Visual Studio 高亮显示/Intellisense。

对于未类型化的 npm 模块,如果我没有时间添加类型,我会创建一个定义文件以将其类型显式设置为 any。例如

example.ts

import * as elemDataset from 'elem-dataset';

elem-dataset.ts

declare module 'elem-dataset';

这让编译器满意。但是对于内部模块我还没有转换成 TS...

import * as example from './example2';  // Where example2 is example2.ts

我收到这个错误:

Could not find a type declaration file for module './example2'. C:/blah/blah/blah/example2.js implicitly has 'any' type.

我试过添加一个类型声明,比如 this answer .

example2.d.ts

declare var example2: any;

declare module "example2" {
    export = example2;
}

但是我得到了这个错误:

File C:/blah/blah/blah/example2.d.ts is not a module.

我也试过 declare module '*'; per this answer ,但我得到了与上面相同的错误。

如何将内部 JS 文件的导入类型显式设置为 any?

最佳答案

事实证明这足以满足我的需求:

// @ts-ignore
import * as x from './example2';

一开始我没有尝试,因为我认为注释会禁用整个文件的类型检查。

但是在导入之前使用 @ts-ignore 允许我对项目的其余部分强制执行类型检查,同时忽略单个 JavaScript 文件,直到我有时间转换它。

关于typescript - 如何使用 noImplicityAny 和不使用 allowJs 在 TS 中导入 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795060/

相关文章:

javascript - Angular Reactive Forms动态嵌套数组检测失去焦点时的变化

typescript - 如何修复不推荐使用的打字警告

reactjs - 如何将 SignaturePad 与 React TypeScript 一起使用

Typescript:具有排除更改属性修饰符的映射类型

javascript - 尝试使用 ts-loader 时 Webpack 抛出错误

javascript - 在AWS弹性Beanstalk上运行babel-node命令?

javascript - 使用 babel env 预设时,传播运算符出现语法错误

typescript - 如何允许 CRA 中的命名空间?

javascript - Webpack 在构建期间使用 Node 'fs' 模块,以便浏览器获取函数的结果

javascript - React Hot Loader 似乎可以工作但不会更新。 [babel-preset-env]