Javascript 编译多个Typescript文件
我的nodejs Typescript服务器变得越来越复杂,现在依赖于另一个.ts文件中定义的几个类。这就产生了一个奇怪的编译问题:Javascript 编译多个Typescript文件,javascript,node.js,compiler-construction,webserver,typescript,Javascript,Node.js,Compiler Construction,Webserver,Typescript,我的nodejs Typescript服务器变得越来越复杂,现在依赖于另一个.ts文件中定义的几个类。这就产生了一个奇怪的编译问题: tsc server.ts可以很好地编译所有内容。但是node server.js在 从另一个.ts文件实例化类的第一行 tsc--out server.js server.ts导致错误消息:“模块 发射与发射的脚本冲突“ tsc--out serv.js server.ts似乎可以工作,但实际上可以编译 除了server.ts之外的所有内容。其他文件中的代码就
可以很好地编译所有内容。但是tsc server.ts
在 从另一个.ts文件实例化类的第一行node server.js
导致错误消息:“模块 发射与发射的脚本冲突“tsc--out server.js server.ts
似乎可以工作,但实际上可以编译 除了server.ts之外的所有内容。其他文件中的代码就在那里,tsc--out serv.js server.ts
只是返回,没有任何输出node serv.js
如何正确使用
tsc
服务器?您的服务器。ts
依赖项需要是使用顶级导出
指令导出其表面积的模块,并且服务器。ts
应使用导入
指令加载它们。这里的根本原因是TypeScript有两种不同类型的编译宇宙
第一个是用于常规网页的默认加载程序,其中一些简单加载程序以固定顺序获取1个或多个源文件并按该顺序执行,您可以自行进行依赖项排序。这称为“程序”编译。在程序编译中,可以并行编译(a.ts=>a.js,b.ts=>b.js),也可以使用--out
((a.ts+b.ts)=>out.js)进行级联编译
在程序编译中,您可以使用//
标记引用引用。如果这些引用是对源文件(.ts
)的引用,则如果使用--out
,它们将被连接到输出中,否则将作为并排的.js
文件发出。如果这些引用是对声明文件(.d.ts
)的引用,那么基本上就是说您将通过外部加载程序(即浏览器中的
标记)加载这些文件的定义
第二种是编译类型,可用于node.js或其他使用运行时依赖项解析进行异步或幂等模块加载的环境。这称为“模块”编译。在这里,传递给tsc
的--module
标志很重要,唯一有效的方法是并行编译,因为将单个文件作为模块加载(通常)是node.js中的模块加载程序的工作方式,等等
在模块编译中,您可以在顶级对象(函数、类、模块、接口或变量)上使用export
关键字来控制使用import
引用您的代码可用的内容。您应该只拥有指向.d.ts
声明文件的/
标记,因为基于模块的运行时加载程序没有加载裸JS文件的概念。您不能使用--out
进行编译
您从来都不想混合和匹配这些编译模式,因为它根本不起作用。事实上,在0.8.2.0中,
tsc
如果您尝试执行此操作,只会发出一个错误。我有一个web应用程序,其中包含大量的TypeScript文件。下面是我如何解决这个问题的:
app.tsproj T4模板:感谢您的回答。最后,我终于明白了什么时候使用模块,什么时候使用参考路径。你能用你的答案提供一些例子吗?我试图使用Phaser.io+TypeScript创建多个文件,但是当我运行我的应用程序时,在第二个文件中,我有一个扩展Namespace.class的类,但是我收到一个错误,说找不到Namespace。