Se ho questo ts modulo:implementazione tipografico AMD male con Javascript/RequireJS
export function say(){
console.log("said");
}
e compilo con l'opzione amd posso usarlo abbastanza facilmente da un client ts:
import foo = module("tsmodule")
foo.say();
export var x = 123;
Tuttavia, se devo javascript equivalente al modulo ts:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
non v'è alcun modo per utilizzare facilmente. La soluzione più semplice possibile:
// 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();
non riesce a causa di un errore http://requirejs.org/docs/errors.html#notloaded. Poiché "jsmodule" non è stato passato alla chiamata define nel dattiloscritto generato.
Le due soluzioni Ho
- non utilizzare l'importazione/esportazione (caratteristiche del linguaggio perse)
- uso richiede ([]) (ancora non può esportare qualcosa che dipende dalla require ([ ]) chiamata)
hanno limitazioni: https://github.com/basarat/typescript-requirejs. C'è un altro modo? Se non è possibile votare qui: https://typescript.codeplex.com/workitem/948 :)
apparentemente una funzionalità non documentata, e non funziona con la mia versione TSC 0.9.0 alpha. Fammi disinstallare/installare alla versione 0.8 – basarat
Aww shoot, hanno rimosso questo in 0.9 ?! Sto usando 0.8.1.1. – thomaux
Funziona in 0.8.3. Ma non in 0.9.0alpha – basarat