Zastanawiam się, jak to możliwe, aby przekształcić maszynopis do JavaScriptu w wieloplatformowym sposób. Jestem świadomy o dostępności węzła menedżera pakietów na maszynie , ale czy są jakieś inne alternatywy, które mogą być używane po stronie serwera?
Przekształcenie maszynopis w JavaScripcie
Kompilator maszynopis jest zbudowany na maszynie, a więc jest dostępny w postaci pliku (JS tsc.js), które mogą być uruchamiane za pomocą tylko o VM lub JS realizacji ES3-compiliant.
Powiedział, że obecna infrastruktura kompilatora jest plik I / O obsługuje tylko Node oraz Windows Scripting Host API plików. Jeśli chcesz polecić wsparcie dla innego środowiska, zachęcamy do skontaktowania się z zespołem na naszej stronie github (dawniej CodePlex )
Może to nie jest odpowiedź chcesz, ale jak wszyscy wspomniano, kompilator jest plik JS, więc opcje są opcje wykonywania pliku JS.
W systemie Windows, są 2 oczywistych, węzła i Windows Script Host.
Wiesz już o węźle, druga opcja jest komponentem, który przychodzi ze wszystkimi wersjami Windows (myślę), można zrobić to tak:
cscript path/to/tsc.js source-file.ts
można zobaczyć wszystkie opcje kompilatora po prostu:
cscript path/to/tsc.js
W systemie Linux Zakładam, powinieneś być w stanie wykorzystać (oprócz węzła):
- V8 samodzielna powłoka, wymienić
nodelubcscriptzv8-shell - ExecJS https://github.com/sstephenson/execjs
Każdy inny biegacz JS dostępny na wybranej platformie (inna odpowiedź wspomniano Rhino na przykład)
Aktualizacja: Kolejna odpowiedź sugeruje kompilator API jest kompatybilny tylko z węzła i Windows Script Host (cscript Tool), więc, jeśli poprawna, a następnie na Linuksie musisz Node skompilować maszynopis.
Jeśli szukasz czegoś podobnego apt get tsc(lub cokolwiek zarządcy pakietów Linux / Mac są podobne), myślę, że nie ma.
Pamiętam, że czytałem gdzieś, że I / O jest zoptymalizowany dla węzła i Windows Script Host, więc jeśli masz problemy z opcji, będziesz prawdopodobnie skończyć z węzła, jeśli szukają niezależność platformy.
Aktualizacja: Kolejna odpowiedź tutaj potwierdza to samo o kompatybilności.
Konkretnie, na serwerze (przy założeniu, że serwer ma node.js jest dostępny), to wystarczy uruchomić:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
można uruchomić tego polecenia bez nazw plików wejściowych, aby zobaczyć pomoc wiersza polecenia dla tsc.js.
Mam projekt, który kompiluje maszynopis do JavaScript w Javie:
https://github.com/martypitt/typescript4j
Jak wspomniano w innych odpowiedzi, to sprawia, że korzystanie z Rhino, więc nie ma zależności na npmlub node.
Oto przykład:
// 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'));
Używam go w innym projekcie - „” Bakehouse wykonać kompilację on-the-fly maszynopisu zasobów w środowiskach Wiosna
Jeśli to jest Java, że trzeba kierować następnie można uruchomić tsc.js z silnikiem Rhino jako część procesu kompilacji.
Skompilować TS -> JS: węzeł jest dostępna dla wszystkich popularnych platform, więc nie rozumiem, dlaczego chcesz chcą mieć tsc.java gdy masz już tsc.js. Instalacja węzeł nie jest wielkim problemem. W rzeczywistości, jest to łatwiejsze niż Java.
Gdy masz plik proj.js można następnie skopiować go do których kiedykolwiek wdrożenie platformy chcesz używać.
Z mojego punktu widzenia, JavaScript - a dokładniej ECMAScript jest alternatywą dla Javy. Więc jestem szczęśliwy, że nie muszę się użerać JVM itp korzystania z narzędzia. Ale jeśli wolisz Java, to dlaczego nawet przeszkadzało z JS?
I już zostały gry z tego, a może skompilować maszynopis z javascript z następującego kodu:
<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>
Nie jest to jednak idealne. Próbuję dostać coś działa, więc mogę przekonwertować maszynopis do JS wewnątrz C # .NET (przy użyciu JavaScript), ale jestem coraz przepełnienie stosu na wezwanie ts.addUnit.
To jest to, co pracował dla mnie:
Po pierwsze, zainstalowany typescript moduł węzła >> npm install -g typescript. Daje to narzędzie wiersza poleceń tsc.
Kolejny, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- to będzie i pliki i . Dostarczamy plik jako punkt odniesienia dla prawidłowego transpilation.
transpilegulpfile.tsgulp-config.tsgulpfile.jsgulp-config.jstypings/tsd.d.ts typescriptModuł węzeł obejmuje wiele opcji >>tsc -hokreślić katalog docelowy lub plik, itd .
Mam nadzieję że to pomoże.
SublimeText2 trick można transpile maszynopis do javascript bezpośrednio od SublimeText2 (trzeba węzeł):
Utwórz Typescript.sublime-buildplik /Sublime Text 2/Packages/Usero tej treści:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
Następnie, teraz można transpile kod z Ctrl + B lub Cmd + B













