Mi chiedo come è possibile trasformare il dattiloscritto in JavaScript in modo cross platform. Sono consapevole circa la disponibilità di nodo del gestore di pacchetti per dattiloscritto , ma ci sono altre alternative che possono essere utilizzati sul lato server?
Trasformare dattiloscritto in JavaScript
fonte dall'utente Alex Objelean
In altre lingue...
Il compilatore tipografico è costruito a macchina, e quindi è disponibile come file JS ( tsc.js) che può essere eseguito utilizzando praticamente qualsiasi implementazione VM o JS-ES3 compiliant.
Detto questo, l'attuale infrastruttura di file di I / O del compilatore supporta solo nodo e le API di file Windows Scripting Host. Se vuoi consigliare per il supporto per un altro ambiente, sentitevi liberi di entrare in contatto con il team presso il nostro sito GitHub (precedentemente CodePlex )
Forse non è la risposta che desidera, ma come tutti accennato, il compilatore è un file JS, quindi, le opzioni sono le opzioni di esecuzione di un file JS.
In Windows, ci sono 2 quelli ovvi, Host Nodo, e Windows Script.
Sai di nodo già, l'altra opzione è un componente che viene fornito con tutte le versioni di Windows (credo), si può fare in questo modo:
cscript path/to/tsc.js source-file.ts
Potete vedere tutte le opzioni di compilazione da solo:
cscript path/to/tsc.js
Su Linux Presumo si dovrebbe essere in grado di utilizzare (oltre al nodo):
- V8 shell standalone, sostituire
nodeocscriptconv8-shell - ExecJS https://github.com/sstephenson/execjs
Qualsiasi altro corridore JS disponibile sulla piattaforma selezionata (un'altra risposta citato rinoceronte per esempio)
Aggiornamento: Un'altra risposta suggerisce l'API compilatore è compatibile solo con nodo e Windows Script Host (strumento cscript), quindi, se corretto, quindi su Linux è necessario Nodo compilare dattiloscritto.
Se siete alla ricerca di qualcosa di simile apt get tsc(o qualsiasi altra cosa i gestori di pacchetti Linux / Mac sono simili), penso che non c'è.
Ricordo di aver letto da qualche parte che l'I / O è ottimizzato per Node e Windows Script Host, quindi, se avete problemi con le opzioni, probabilmente vi ritroverete con il nodo se in cerca di indipendenza dalla piattaforma.
Aggiornamento: Un'altra risposta qui conferma la stessa cosa di compatibilità.
Concretamente, sul server (supponendo che il server ha Node.js disponibili), si sarebbe semplicemente eseguire:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
È possibile eseguire il comando senza i nomi dei file di input per consultare la guida della riga di comando per tsc.js.
Ho un progetto che raccoglie tipografico a JavaScript in Java:
https://github.com/martypitt/typescript4j
Come discusso in altre risposte, questo si avvale di Rhino, quindi non ha dipendenze npmo node.
Ecco un esempio:
// Instantiate the compiler:
TypescriptCompiler compiler = new TypescriptCompiler();
// Compile a string:
String output = compiler.compile("class Greeter { greeting: string; }");
// Or, compile and output to a file:
compiler.compile(new File("example.ts"), new File('output.js'));
Io lo uso in un altro progetto - 'Bakehouse' per eseguire la compilazione on-the-fly delle risorse dattiloscritto all'interno degli ambienti di primavera
Se si tratta di Java che è necessario indirizzare allora si potrebbe eseguire tsc.js con il motore Rhino come parte del processo di generazione.
Per compilare ts -> js: il nodo è disponibile per tutte le piattaforme più comuni, quindi non riesco a capire il motivo per cui ci si vuole avere un tsc.java quando si dispone già di un tsc.js. L'installazione del nodo è un grosso problema. In realtà, è più facile che Java.
Una volta ottenuto il file di proj.js, è possibile quindi copiarlo piattaforma mai di distribuzione che si desidera utilizzare per la quale.
Dal mio punto di vista, JavaScript - o più precisamente ECMAScript è un'alternativa a Java. Quindi sono felice di non dover disputare JVM ecc per utilizzare lo strumento. Ma se si preferisce Java, allora perché nemmeno con JS?
Ho giocato in giro con questo, e riesco a compilare dattiloscritto con javascript con il seguente codice:
<script src=typescript.js></script>
<script>
var scriptText = ""
+ "/// <reference path=\"test.ts\"/>" + "\r\n"
+ "class Car {"
+ " constructor (private name: string) { } "
+ " getName() { "
+ " var juice = new Juice();"
+ " return name; "
+ " } "
+ "} "
+ "var car = new Car('Subaru Impreza');"
+ "console.log(car.getName());";
var TextWriter = function () { };
TextWriter.prototype = {
collected: '',
Write: function (sc) {
this.collected += sc;
},
WriteLine: function(sc) {
this.collected += sc + '\n';
},
toString: function() {
return this.collected;
}
};
var output = new TextWriter();
var tsc = new TypeScript.TypeScriptCompiler(output);
var script = tsc.addUnit(scriptText, "");
tsc.emit();
console.log(output.toString());
</script>
Non è esattamente l'ideale però. Sto cercando di ottenere qualcosa in esecuzione in modo da poter convertire il dattiloscritto di JS all'interno di C # (utilizzando Javascript NET), ma sto ottenendo un overflow dello stack sulla chiamata ts.addUnit.
Questo è ciò che ha funzionato per me:
In primo luogo, installato il typescript modulo di nodo >> npm install -g typescript. Questo dà una linea di comando tsc.
Il prossimo, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- questo sarà
transpilel'gulpfile.tsegulp-config.tsfile dagulpfile.jsegulp-config.js. Forniamo iltypings/tsd.d.tsfile come riferimento per la corretta transpilation. - Il
typescriptmodulo di nodo copre molte opzioni >>tsc -hper specificare la directory di output o un file, ecc .
Spero che questo ti aiuti.
SublimeText2 trucco È possibile transpile dattiloscritto a JavaScript direttamente da SublimeText2 (è necessario nodo):
Creare un Typescript.sublime-buildfile in /Sublime Text 2/Packages/Usercon questo contenuto:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
quindi, ora, è possibile transpile il codice con Ctrl + B o cmd + B