【发布时间】:2014-06-18 20:21:47
【问题描述】:
我有一个模块“foo”,我试图将它导入 3 个不同的文件(使用 AMD)。这是我的文件夹结构:
lib/
foo.ts
views/
view1/
view1.ts
view2/
view2.ts
sub/
subview2.ts
我希望能够将 foo.ts 设置为适用于 None/AMD/CommonJS。如果我输入“export = foo;”在文件中它不会为正常使用而编译。我希望能够如下所示进行设置:
module foo {
declare var define: any;
declare var module: any;
if (typeof define === 'function' && define.amd) {
define(() => {
return foo;
});
} else if (typeof module !== 'undefined' && module.exports) {
module.exports = foo;
}
}
declare module 'foo' {
export = foo;
}
以上内容适用于节点模块(因为某些节点魔法),但不适用于本地文件。从我拥有的文件夹结构来看,我需要以下两个语句才能工作。
import foo = require('../../lib/foo');
和
import foo = require('../../../lib/foo');
TypeScript 不喜欢我这样做,除非我使用以下内容,否则会抱怨:
import foo = require('foo');
但是,这在运行时不起作用(除非 foo 是一个打包的节点模块,但它不是)。我知道我可以进入 foo.ts 文件并输入“export = foo;”在根级别,但我没有写 foo,并且宁愿不编辑我没有写的东西,以便我将来可以轻松更新它。
有什么好的方法可以解决这个问题,还是我错过了什么?
【问题讨论】:
标签: typescript