javascript – 编译多个Typescript文件

前端之家收集整理的这篇文章主要介绍了javascript – 编译多个Typescript文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的nodejs Typescript服务器的复杂性增长,现在依赖于另一个.ts文件中定义的几个类.这造成了一个奇怪的编译问题:

> tsc server.ts编译一切都很好.但是节点server.js崩溃了
第一行从另一个.ts文件实例化一个类
> tsc –out server.js server.ts导致错误消息:“module”
发射与发射脚本的碰撞“
> tsc -out serv.js server.ts似乎工作,但实际编译
一切EXCEPT server.ts.来自其他文件代码在那里,节点serv.js只返回没有任何输出

我不是唯一有这个错误的人,https://typescript.codeplex.com/workitem/294不幸的是,codeplex的解决方案对我来说并不奏效.

如何正确使用tsc?

解决方法

您的server.ts依赖关系需要是使用顶级导出指令导出其表面区域的模块,server.ts应使用导入指令加载它们.这里的根本原因是TypeScript有两种不同类型的Universe用于编译.

第一个是用于常规网页的默认页面,其中一些简单的加载器以一些固定的顺序使用1个或更多的源文件,并按照该顺序执行它们,并且您自己进行依赖性排序.这被称为“程序”编译.在程序编译中,您可以并行编译(a.ts => a.js,b.ts => b.js),或者可以使用-out((a.ts b.ts)=> out.js).

在程序编译中,使用///< reference>引用你的引用.标签.如果这些引用是源文件(.ts),那么如果使用-out,它们将被连接到输出,否则以并行方式发布.js文件.如果这些引用是声明文件(.d.ts),那么您基本上就是说您将获得通过外部加载器加载的文件的定义(即浏览器中的< script>标签).

第二种是用于node.js或其他使用运行时依赖性解析执行异步或幂等模块加载的环境的编译.这称为“模块”编译.在这里,你传递给tsc的模块标志是重要的,唯一有效的做法是并行编译,因为加载单个文件作为模块是(通常)如何在node.js等中加载模块工作.

在模块编译中,您可以使用顶级对象(函数,类,模块,接口或var)上的export关键字来控制可以使用导入的代码.你应该只有///< reference>标签指向.d.ts声明文件,因为基于模块的运行时加载程序没有加载裸体JS文件的概念.你不会用-out编译.

你不想混合和匹配这些编译模式,因为它根本不会工作.实际上,在0.8.2.0中,如果您尝试这样做,tsc将会简单地发出错误.

猜你在找的JavaScript相关文章