Mă întreb cum este posibil de a transforma typescript în JavaScript într - o manieră cross - platform. Sunt conștient despre disponibilitatea nodului manager de pachete pentru dactilografiat , dar există și alte alternative care pot fi utilizate pe partea de server?
Transformarea typescript în JavaScript
sursa de către utilizator Alex Objelean
În alte limbi...
Compilatorul typescript este construit dactilografiat, și , prin urmare , este disponibil ca fișier JS ( tsc.js) , care poate fi rulat folosind doar despre orice implementare VM sau JS-ES3 compiliant.
Asta a spus, infrastructura de fișier I / O curent compilatorului suportă doar Nodul și Windows Scripting API - uri de fișiere gazdă. Dacă doriți să recomande sprijin pentru un alt mediu, simțiți - vă liber pentru a ajunge la echipa de la nostru site - ul GitHub (Fost CodePlex )
Poate că nu e răspunsul dorit, dar toată lumea a menționat, compilatorul este un fișier JS, deci, opțiunile sunt opțiunile de executare a unui fișier JS.
În Windows, există 2 cele evidente, Nodul și Windows Script Host.
Știi despre nod deja, cealaltă opțiune este o componentă care vine cu toate versiunile de Windows (cred), o poți face în felul următor:
cscript path/to/tsc.js source-file.ts
Puteți vedea toate opțiunile de compilare doar prin:
cscript path/to/tsc.js
Pe Linux Presupun că ar trebui să poată utiliza (în plus față de nod):
- V8 autonom coajă, înlocuiți
nodesaucscriptcuv8-shell - ExecJS https://github.com/sstephenson/execjs
Orice alt alergător JS disponibil pe platforma selectată (un alt răspuns menționat Rhino, de exemplu)
Actualizare: Un alt răspuns sugerează API compilator este compatibil doar cu nod și Windows Script Host (instrument CScript), astfel încât, dacă este corect, atunci pe Linux va trebui Node pentru a compila dactilografiate.
Dacă sunteți în căutarea pentru ceva de genul apt get tsc(sau indiferent de Linux / Mac administratorii de pachete sunt ca), cred că nu există.
Îmi amintesc citit undeva că I / O este optimizat pentru Nodul și Windows Script Host, astfel încât, în cazul în care aveți probleme cu opțiuni, veți termina, probabil, cu Nodul dacă dorește să obțină independența platformei.
UPDATE: Un alt răspuns aici confirmă același lucru despre compatibilitatea.
Concret, pe server (presupunând că serverul dvs. are Node.js disponibile), ar fi pur și simplu rulați:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
Puteți rula această comandă, fără nici un nume de fișiere de intrare pentru a vedea linia de comandă ajutor pentru tsc.js.
Am un proiect care compilează la Javascript typescript în Java:
https://github.com/martypitt/typescript4j
Așa cum sa discutat în alte răspunsuri, acest lucru face uz de Rhino, deci nu are dependențe npmsau node.
Iată un exemplu:
// 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'));
L folosesc într - un alt proiect - „brutărie“ pentru a efectua compilarea on-the-fly a resurselor typescript în medii de primăvară
Dacă este Java care trebuie să vizați, atunci ai putea rula tsc.js cu motorul Rhino, ca parte a procesului de construcție.
Pentru a compila ts -> JS: nod este disponibil pentru toate platformele comune, așa că nu reușesc să văd de ce ai vrea să aibă o tsc.java atunci când aveți deja un tsc.js. Instalarea nod nu e mare. De fapt, este mai ușor decât Java.
Odată ce aveți fișierul proj.js, îl puteți copia pe care vreodată platforma de implementare pe care doriți să o utilizați.
Din punctul meu de vedere, JavaScript - sau, mai precis ECMAScript este o alternativă la Java. Deci, eu sunt fericit că nu am să wrangle JVM, etc pentru a utiliza instrumentul. Dar dacă preferați Java, atunci de ce deranjez, chiar cu JS?
Am jucat în jurul cu acest lucru, și poate compila typescript cu javascript cu următorul cod:
<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>
Nu e chiar ideale totuși. Încerc să iau ceva de funcționare, așa că am putea converti typescript la JS în cadrul C # (.NET folosind Javascript), dar eu sunt obtinerea unui preaplin stivă la apel ts.addUnit.
Aceasta este ceea ce a lucrat pentru mine:
În primul rând, instalat typescript modulul de nod >> npm install -g typescript. Acest lucru oferă un utilitar de linie de comandă tsc.
Următor →, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- acest lucru va și fișiere la AND . Noi furnizam fișierul ca referință pentru transpilation corectă.
transpilegulpfile.tsgulp-config.tsgulpfile.jsgulp-config.jstypings/tsd.d.ts typescriptModulul nod acoperă multe opțiuni >>tsc -hpentru a specifica directorul de ieșire sau un fișier, etc .
Sper că acest lucru vă ajută.
SublimeText2 Trick Puteți transpile dactilografiat JavaScript direct din SublimeText2 (aveți nevoie de nod):
Creați un Typescript.sublime-buildfișier în /Sublime Text 2/Packages/Useracest conținut:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
apoi, acum, puteți transpile codul cu ctrl + B sau Cmd + B