为什么d.ts不从模块目录隐式导入index.d.ts?

时间:2019-03-26 18:04:29

标签: typescript tslint

https://www.typescriptlang.org/docs/handbook/module-resolution.html中写到NodeJS / typescript如何在模块目录中搜索“ main”文件(如果有人导入的话)。但这不适用于d.ts文件(.ts文件正常工作)。

我已经通过gts编译了项目。

build/
-| moduleA.js
-| moduleA.d.ts
-| moduleB/
---| index.js
---| index.d.ts

first.d.ts中,tslint引发错误Cannot find module './moduleB'。最初,我尝试安装typescript@nexttslint@next,但这并没有帮助。然后,我将路径重写为./moduleB/index,并修复了此错误。

// moduleA.d.ts
import { some } from './moduleB'; // ERROR: Cannot find model './moduleB';
import { some } from './moduleB/'; // ERROR: Cannot find model './moduleB/';
import { some } from './moduleB/index'; // work

从文档中(上面的链接):

  

例如,像import { b } from "./moduleB"中的/root/src/moduleA.ts这样的import语句将导致尝试以下位置来定位"./moduleB"

     
1. /root/src/moduleB.ts
2. /root/src/moduleB.tsx
3. /root/src/moduleB.d.ts
4. /root/src/moduleB/package.json (if it specifies a "types" property)
5. /root/src/moduleB/index.ts
6. /root/src/moduleB/index.tsx
7. /root/src/moduleB/index.d.ts   <-- it is my case!

我希望打字稿理解我想导入./moduleB/index而不指定/index。我该如何实现?

1 个答案:

答案 0 :(得分:0)

这是您要实现的目标。您可以指定要导入的index,它将为您搜索路由,但是如果您说要导入“ some-folder”,它将尝试使用该名称查找模块。