相关疑难解决方法(0)

找不到模块'module-name'的声明文件.'/path/to/module-name.js'隐式具有'any'类型

我读了TypeScript 模块解析的工作原理.

我有以下存储库:ts-di.编译目录结构后如下:

??? dist
?   ??? annotations.d.ts
?   ??? annotations.js
?   ??? index.d.ts
?   ??? index.js
?   ??? injector.d.ts
?   ??? injector.js
?   ??? profiler.d.ts
?   ??? profiler.js
?   ??? providers.d.ts
?   ??? providers.js
?   ??? util.d.ts
?   ??? util.js
??? LICENSE
??? package.json
??? README.md
??? src
?   ??? annotations.ts
?   ??? index.ts
?   ??? injector.ts
?   ??? profiler.ts
?   ??? providers.ts
?   ??? util.ts
??? tsconfig.json
Run Code Online (Sandbox Code Playgroud)

在我的package.json中,我写道"main": "dist/index.js".

在Node.js中一切正常,但TypeScript:

import {Injector} from …
Run Code Online (Sandbox Code Playgroud)

node-modules typescript

199
推荐指数
19
解决办法
24万
查看次数

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

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

--noImplicitAny用来鼓励利用打字。

我没有使用,--allowJs因为我的项目太大了,它会阻塞 TypeScript 编译器,并且会破坏 Visual Studio 突出显示/智能感知。

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

例子.ts

import * as elemDataset from 'elem-dataset';
Run Code Online (Sandbox Code Playgroud)

elem-dataset.ts

declare module 'elem-dataset';
Run Code Online (Sandbox Code Playgroud)

这满足编译器。但是对于内部模块,我还没有转换为 TS ...

import * as example from './example2';  // Where example2 is example2.ts
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

找不到模块“./example2”的类型声明文件。C:/blah/blah/blah/example2.js 隐式具有“任何”类型。

我试过添加一个类型声明,就像在这个答案中一样

示例2.d.ts

declare var example2: any;

declare module "example2" {
    export = example2;
}
Run Code Online (Sandbox Code Playgroud)

但是后来我收到了这个错误:

文件 C:/blah/blah/blah/example2.d.ts 不是模块。

我也试着declare module '*';每次这个答案 …

typescript webpack babeljs

6
推荐指数
1
解决办法
1443
查看次数

标签 统计

typescript ×2

babeljs ×1

node-modules ×1

webpack ×1