Jeśli mam to ts moduł:realizacja Typescript AMD złe z JavaScript/RequireJS
export function say(){
console.log("said");
}
i skompilować go z opcją amd mogę go używać dość łatwo z klientem TS:
import foo = module("tsmodule")
foo.say();
export var x = 123;
jednak jeśli mam javascript odpowiednik modułu tS:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
nie ma sposobu, aby go używać łatwo. Najprostsze z możliwych rozwiązań:
// 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();
nie powiodło się z powodu błędu http://requirejs.org/docs/errors.html#notloaded. Ponieważ "jomoduł" nie został przekazany do wywołania zdefiniowanego w wygenerowanym maszynopisie.
Dwa obejścia mam
- nie używać import/eksport (Funkcje językowe utracone)
- użycie require ([]) (wciąż nie może eksportować coś, co zależy od require ([ ]) call)
mają ograniczenia: https://github.com/basarat/typescript-requirejs. Czy istnieje inny sposób? Jeśli nie można głosować tutaj: https://typescript.codeplex.com/workitem/948 :)
najwyraźniej nieudokumentowane funkcję, a nie działa z moją wersją TSC 0.9.0 alfa. Pozwól mi odinstalować/zainstalować wersję 0.8 – basarat
Aww strzelać, usunęli to w 0.9 ?! Używam wersji 0.8.1.1. – thomaux
Działa w wersji 0.8.3. Ale nie w 0.9.0alpha – basarat