.ts文件中的引用声明文件(.d.ts),且编译器“模块”选项设置为“无”

时间:2019-06-26 14:06:18

标签: typescript

我已经用TS设置了ASP.net核心MVC项目。我想在不使用任何模块系统的情况下使用TS。只是“干净”编译的TS => JS。

我面临的问题是,如果不使用“导入”,就无法在.ts文件中引用声明文件(.d.ts)。

如果我确实使用“导入”代码完成并进行类型检查,但是由于我已将我的项目配置为不使用任何“模块”系统,则编译器会抱怨说:“在以下情况下无法使用导入,导出或模块增强功能: “ --module”为“无”

我已经尝试使用三斜杠指令Triple-Slash Directivesusing @types, typeRoots and types in tsconfig.json files ,但是没有运气。

VS2017(与VS Code相同)似乎无法解析引用的文件。

我已经建立了一个初步的项目来演示问题 https://github.com/gtrifidis/Asp.netCoreTypescriptDemo/tree/master/TypeScriptDemo

非常感谢您的帮助/想法。

1 个答案:

答案 0 :(得分:1)

问题不在于TypeScript找不到您的d.ts文件,而是因为在您的情况下i18next的文件index.d.ts是以模块方式编写的,因此应该使用仅与import。幸运的是,解决此问题非常容易。您要做的就是转到index.d.ts并删除最后一行:

....
declare const i18next: i18next.i18n;
export = i18next; // <- remove this line

然后您可以继续并在LocalizationTest.ts中删除import,它将可以正常编译。

更新

或者,正如@AluanHaddad指出的那样,您应该提交添加新行的PR,而不是删除它并创建自己的定义:

....
declare const i18next: i18next.i18n;
export = i18next;
export as namespace i18next; // <- add this instead