我有一個模塊「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');
打字稿不喜歡我做的其中任意一個,並會抱怨,除非我用的是以下幾點:
import foo = require('foo');
但是這不會在運行時正常工作(除非foo是封裝的節點模塊,否則不是)。我知道我可以進入foo.ts文件並將「export = foo;」在根層面,但我沒有寫foo,而寧願不編輯我沒有寫的東西,以便將來可以輕鬆更新它。
有沒有一個很好的解決方法,或者我錯過了什麼?
在我的場景中,我實際上有.ts(不是.d.ts和.js)。我正在尋找一種構建.ts的方式,以便我可以在/ withought模塊加載時使用它。 所以說你有一個用TypeScript編寫的庫,你想分發.ts文件而不是分發.d.ts和.js文件。您希望.ts文件可以在模塊加載和不加載的情況下使用。有沒有簡單的方法來做到這一點,或者你需要做些奇怪的事情? – wjohnsto
請參閱更新「如果您擁有ts文件」 – basarat
很高興知道,謝謝! – wjohnsto