我有一个旧的打字稿项目,它使用处理.d.ts文件的/typings/tsd.json方法,它还使用Typescript的module
关键字将源代码编译为JavaScript的IIFE模块模式。 tsconfig.json中的模块设置(commonjs/amd/etc)被该关键字忽略。如何混合环境和非环境打字稿定义文件
对于演示,我加入到这个项目当中使用的import
和export
关键字比较典型的方法有SystemJS模块加载一些较新的打字稿代码,与.d.ts文件/ node_modules/@类型/。
一些咕嘟咕嘟/ SystemJS体操后,这一切都一起工作在运行时,我的轨道上打我的最后期限。但是我在编译时遇到了一个我想解决的情况。
当我修改旧的代码使用来自新代码的类(模型),我想旧代码来了解新代码的.d.ts。所以我添加到旧代码的文件/// <reference path="../../newercode/feature4/models/NewerModels.d.ts"/>
的顶部。 (或者,我把相同的行放在tsd.d.ts中,但我得到了相同的结果。)
编译器抱怨我的旧代码“已经或正在使用私有名'NewModel'”。
Inside NewerModels.d.ts import
和export
关键字仍然存在,而.d.ts文件中没有任何文件已经在/ typings /中使用这些关键字。这些关键字是虚假编译器错误的罪魁祸首。
遗留项目希望环境.d.ts文件,新的代码生成非环境。
有什么我可以做的吗?
我建议不要继续使用'tsd',迁移使用'@types'。你应该能够一次完成。 – unional
您获取包的.d.ts文件根据您从何处获取而有所不同。如果我这样做了,那么所有的.d.ts文件都会导入/导出关键字,因此没有一个遗留代码可以编译。 –
从'@ types'得到的新文件应该有相同的语法。原始库仍然是相同的CommonJS库(除非发生变化,那么您需要处理版本控制)。 'tsd'从DefinitelyTyped获取文件,与'@ types'相同。 TS团队做了合理的工作并转换格式。试试看看它是否有效。 – unional