Zajímalo by mě, jak je to možné transformovat strojopis do JavaScriptu v multiplatformní způsobem. Jsem si vědom o dostupnosti uzlu správce balíčků pro strojopisu , ale existují jiné alternativy, které mohou být použity na straně serveru?
Transformaci strojopis do JavaScriptu
Strojopisu kompilátor je postaven na psacím stroji, a proto je k dispozici jako soubor JS ( tsc.js), které lze spustit pomocí téměř libovolného VM nebo JS realizaci ES3-compiliant.
To znamená, že aktuální soubor I / O infrastruktura kompilátor podporuje pouze Uzel a Windows Scripting Host souborů API. Pokud byste chtěli doporučit pro podporu jiného prostředí, neváhejte oslovit týmu v našem webu GitHub (dříve CodePlex )
Možná, že to není odpověď, kterou chcete, ale jak všichni již bylo zmíněno, kompilátor je soubor JS, takže vaše možnosti jsou možnosti provádění souboru JS.
V systému Windows, tam jsou 2 z nich zřejmé, Node a Windows Script Host.
Už víte, o uzlu, druhou možností je složka, která je dodáván se všemi verzemi systému Windows (myslím), můžete to udělat takto:
cscript path/to/tsc.js source-file.ts
Můžete vidět všechny možnosti kompilátoru jen o:
cscript path/to/tsc.js
V systému Linux Předpokládám, že byste měli být schopni používat (kromě uzlu):
- V8 samostatný shell, nahradit
nodenebocscriptsv8-shell - ExecJS https://github.com/sstephenson/execjs
Jakýkoliv jiný JS běžec k dispozici na zvolené platformě (jiný odpovědi zmínil Rhino například)
Aktualizace: Další odpověď naznačuje, že kompilátor API je kompatibilní pouze s uzlem a Windows Script Host (cscript nástrojů), takže pokud správné, pak na Linuxu budete potřebovat Uzel sestavit strojopisem.
Pokud hledáte něco jako apt get tsc(nebo cokoliv manažeři Linux / Mac balíčku jsou podobně), myslím, že tam není.
Vzpomínám si, že někde četl, že I / O je optimalizován pro Node a Windows Script Host, takže pokud máte problémy s možnostmi, budete pravděpodobně skončí s uzlem by hledal nezávislost na platformě.
Aktualizace: Další odpověď zde potvrzuje totéž o kompatibilitě.
Konkrétně na serveru (za předpokladu, že váš server má Node.js k dispozici), měli byste jednoduše spustit:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
Můžete spustit tento příkaz bez jakýchkoliv vstupních názvů souborů pro zobrazení příkazového řádku nápovědu k tsc.js.
Mám projekt, který sestavuje strojopisu Javascript v Javě:
https://github.com/martypitt/typescript4j
Jak je uvedeno v další odpovědi, to využívá Rhino, takže nemá žádné závislosti na npmnebo node.
Zde je příklad:
// 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'));
Používám ho v jiném projektu - ‚pekárna‘ provést kompilaci on-the-fly na psacím stroji zdrojů v rámci jarní prostředí
Pokud je to Java, že je třeba zaměřit se pak byste mohli spustit tsc.js s motorem Rhino jako součást procesu sestavení.
Kompilovat ts -> js: uzel je k dispozici pro všechny běžné platformy, takže nechápu, proč byste chtěli mít tsc.java když už máte tsc.js. Instalace uzel není žádný velký problém. Ve skutečnosti je to jednodušší, než Java.
Jakmile budete mít soubor proj.js, pak můžete zkopírovat do které někdy nasazení platformy, které chcete použít.
Z mého pohledu, JavaScript - nebo přesněji ECMAScript je alternativa k Javě. Takže jsem rád, že nemám k hádce JVM apod použít nástroj. Ale pokud dáváte přednost Javu, tak proč ještě obtěžovat s JS?
Hrál jsem si s tím i možnost sestavit strojopisu s javascriptem s následujícím kódem:
<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>
Není to zrovna ideální ačkoli. Snažím se dostat něco běží, takže můžu převést na psacím stroji na JS v C # (.NET pomocí JavaScriptu), ale já začínám přetečení zásobníku na ts.addUnit hovoru.
To je to, co pracoval pro mě:
Za prvé, nainstalovali typescript modul uzlu >> npm install -g typescript. To dává nástroj příkazového řádku tsc.
Další, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- To bude a soubory a . Dodáváme soubor jako referenční bod pro správné transpilation.
transpilegulpfile.tsgulp-config.tsgulpfile.jsgulp-config.jstypings/tsd.d.ts typescriptModul uzel pokrývá mnoho možností >>tsc -hurčit výstupní adresář nebo soubor, atd .
Snad to pomůže.
SublimeText2 Trick můžete transpile strojopis do JavaScriptu přímo z SublimeText2 (budete potřebovat uzel):
Vytvořte Typescript.sublime-buildsoubor /Sublime Text 2/Packages/Users tímto obsahem:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
pak, nyní si můžete transpile kód pomocí Ctrl + B nebo Cmd + B













