打字稿';s";将JavaScript输出合并到文件中;选项没有';t在没有//<;的情况下推断正确的脚本顺序;参考资料>;标签
我正在开发一个使用“将JavaScript输出合并到文件”选项的TypeScript解决方案: 我经常引用另一个文件中定义的项目,例如: 在打字稿';s";将JavaScript输出合并到文件中;选项没有';t在没有//<;的情况下推断正确的脚本顺序;参考资料>;标签,javascript,visual-studio,typescript,Javascript,Visual Studio,Typescript,我正在开发一个使用“将JavaScript输出合并到文件”选项的TypeScript解决方案: 我经常引用另一个文件中定义的项目,例如: 在MyBaseClass.ts中: export class MyBaseClass { } export class MySubClass extends MyBaseClass { } /// <reference path="MyBaseClass.ts" /> export class MySubClass extends MyBas
MyBaseClass.ts
中:
export class MyBaseClass { }
export class MySubClass extends MyBaseClass { }
/// <reference path="MyBaseClass.ts" />
export class MySubClass extends MyBaseClass { }
在MySubClass.ts
中:
export class MyBaseClass { }
export class MySubClass extends MyBaseClass { }
/// <reference path="MyBaseClass.ts" />
export class MySubClass extends MyBaseClass { }
在开发过程中,Visual Studio理解MySubClass
引用了MyBaseClass.ts
中定义的MyBaseClass
——解决方案成功构建,我可以使用F12导航到MyBaseClass
但是,我在运行解决方案时遇到运行时错误,因为生成的JavaScript文件在MyBaseClass
之前定义了MySubClass
我可以通过在MySubClass.ts
中添加//
标记来修复这些运行时错误:
export class MyBaseClass { }
export class MySubClass extends MyBaseClass { }
/// <reference path="MyBaseClass.ts" />
export class MySubClass extends MyBaseClass { }
//
导出类MySubClass扩展MyBaseClass{}
为什么IDE理解MySubClass
和MyBaseClass
之间的关系,但是编译器没有在生成的输出中正确地排序这些类的定义?
我希望生成的输出正确推断类定义的顺序(首选),或者如果//
标记不存在,则TypeScript编译器抛出错误
为什么IDE理解MySubClass和MyBaseClass之间的关系
它只知道语义关系。而不是运行时要求。如何加载模块取决于您
注意:我真的希望这个问题可以解决。Typescript intellisense在推断正确顺序方面似乎没有任何问题。当具有“合并为一个文件”选项的编译器无法解决此问题时,它会使更大的js文件提前变得不可靠。。。
对此问题的正常反应是,使用动态加载。。。这是真的。但在我的例子中,动态加载的模块已经存在许多类,这些类位于编译成单个文件的独立项目中。因此,该场景中也存在问题…看起来这在TypeScript 1.8中是可能的: 您需要确保已选择系统或AMD模块系统:
谢谢您的回复。在我的例子中,“模块加载”在概念上不是自动生成单个JavaScript文件的同义词吗?如果是这样,那就不取决于我了。另外,我不确定您的链接是否适用于我的情况-我使用的是Visual Studio 2014的库存安装,用于我的TypeScript编译/组合,而不是node.js/grunt。在我的例子中,除非Visual Studio在引擎盖下使用
grunt ts
插件?,否则“模块加载”在概念上不是自动生成单个JavaScript文件的同义词吗?
它可以做到这一点。但它不能做到这一点。所以这取决于你。很抱歉明白了,嗯,明白了。我正试图向我的团队的其他成员推销TypeScript,像这样的细节对我的案子没有帮助。无论如何,谢谢你的帮助。最好使用外部模块/commonjs。这就是JavaScript在规模上的发展方向。在那里,模块加载顺序由运行时管理。