我已经用TS设置了ASP.net核心MVC项目。我想在不使用任何模块系统的情况下使用TS。只是“干净”编译的TS => JS。
我面临的问题是,如果不使用“导入”,就无法在.ts文件中引用声明文件(.d.ts)。
如果我确实使用“导入”代码完成并进行类型检查,但是由于我已将我的项目配置为不使用任何“模块”系统,则编译器会抱怨说:“在以下情况下无法使用导入,导出或模块增强功能: “ --module”为“无”
我已经尝试使用三斜杠指令Triple-Slash Directives和using @types, typeRoots and types in tsconfig.json files ,但是没有运气。
VS2017(与VS Code相同)似乎无法解析引用的文件。
我已经建立了一个初步的项目来演示问题 https://github.com/gtrifidis/Asp.netCoreTypescriptDemo/tree/master/TypeScriptDemo
非常感谢您的帮助/想法。
答案 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