5
如果我有這樣的TS模塊:打字稿AMD執行不好的JavaScript/RequireJS
export function say(){
console.log("said");
}
,我採用了AMD選項編譯它,我可以從一個TS客戶很容易地使用它:
import foo = module("tsmodule")
foo.say();
export var x = 123;
但是,如果我有JavaScript相當於ts模塊:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
沒有辦法很容易地使用它。最簡單的解決方案:
// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;
// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();
export var x = 123;
import foo = module("tsmodule")
foo.say();
由於錯誤http://requirejs.org/docs/errors.html#notloaded而失敗。由於「jsmodule」沒有傳遞給生成的打印稿中的define調用。
兩個解決方法我有
- 不使用導入/導出(語言功能喪失)
- 使用要求([])(尚不能導出的東西,依賴於要求([ ])呼叫)
有限制:https://github.com/basarat/typescript-requirejs。有另一種方法嗎?如果沒有,你可以投票在這裏:https://typescript.codeplex.com/workitem/948 :)
顯然無證功能,並且不與我的TSC版本0.9.0阿爾法工作。讓我卸載/安裝到版本0.8 – basarat 2013-04-25 12:12:59
Aww拍攝,他們刪除了這個0.9?!我使用0.8.1.1。 – thomaux 2013-04-25 12:20:09
在0.8.3中工作。但不是在0.9.0alpha – basarat 2013-04-25 12:47:51