我在TypeScript中创建一个复杂的模块(解析PE文件结构,类似于Mono.Cecil所做的,但是在TS / JS中并且不太复杂)。
问题是如何最好地将该功能放在文件/文件夹/模块维度中。
我开始使用类似于C#的结构,每个类都在自己的文件中,名称空间(模块)对应于大量或多或少独立的功能,并且存在于子文件夹中。
现在在TypeScript中有几个问题。或许这些问题与我的愚蠢有关?
处理这个问题的最佳方法是什么?
答案 0 :(得分:3)
我目前正在使用require.js和amd模块来构造代码。每个类都在一个文件中,所需的只是require.js引导程序。我不使用节点,所以不能在这里评论,但它可能值得一看。 http://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/
答案 1 :(得分:0)
Typescript 1.0+的答案是使用CommonJs语法
来使用模块传递tsc
标志
--module commonjs
生成CommonJS样式模块,在Typescript文件中,使用require语法
导入资源import A = require('./A') //no .ts in the name
要在浏览器中使用,请使用browserify,最有可能与grunt-browserify
相关联答案 2 :(得分:0)
如果您不想浏览浏览器(请参阅BGR的答案),您可以创建2个构建过程,一个用于CommonJS(节点),另一个用于RequireJS(浏览器)。 2个版本可以将其结果输出到其他文件夹(例如projectRoot/dist/server
)。 Grunt / Gulp项目的地狱,但并非不可能。
为了获得良好的可用性,我还创建了一个包装文件,其中没有类/接口,它只包含其他文件并选择要导出的内容。我刚刚得到了一些提示: TypeScript export imported interface