【发布时间】:2016-01-21 00:52:29
【问题描述】:
抱歉,如果这个问题有点不集中/漫无边际,但我在这里真正遇到的是几个相互关联的问题,我想一次性提出。
假设我正在开发一个名为foo 的库,它由文件foo.ts、bar.ts 和baz.ts 组成。 foo.ts 是库的根,即它依赖于其他两个并导出依赖应用程序可能需要的所有功能。还假设我想让这个库作为 AMD 可加载模块提供。
在 TypeScript 中构建这段代码的正确方法是什么?以下是我能想到的方法:
在整个文件中使用
/// <reference path="..."/>,然后使用--out combined.js将它们组合成一个大库。但是如果我这样做,我看不到如何使组合输出作为 AMD 模块在下游可用。如果我将export语句添加到foo模块,它对组合文件没有影响,只会生成foo.js的requirejs 包装版本。因此,通过--out combined.js组合内部模块然后通过export使组合结果的某些部分可用似乎并不简单。我是否应该使用其他工具将串联结果包装在 AMD 样板文件中,避开 TypeScript 的import/export功能?使
foo.ts、bar.ts和baz.ts成为所有外部模块,让它们相互依赖,例如使用import bar = require('./bar');,并让foo.ts导出一个模块,该模块仅包含作为库公共 API 一部分的bar和baz的一部分。如果我走这条路,那么默认情况下,由于我们使用的是 AMD 模块,所有文件都将单独下载,即使它们高度相互依赖,这似乎不太理想。但是我可以使用 requirejs 优化器将生成的单个模块组合成一个大模块。但是,如果使用该库的应用程序也是用 TypeScript 编写的,并且想要使用它的声明,那么它应该在哪里查找呢?当使用 (1) 中的--out combined.js选项时,还可以为库获得组合的.d.ts,但是在使用外部模块时,我看不到如何执行此操作。下游应用程序代码是否应该进入源目录并获取单独的声明文件,即foo.d.ts、bar.d.ts、baz.d.ts?我应该手动创建一个引用所有自动生成的单例.d.tss 的主声明文件吗?
【问题讨论】:
标签: typescript