Я задаюсь вопросом , как можно превратить машинопись в JavaScript в кроссплатформенных образом. Я в курсе о наличии узлового менеджера пакетов для машинописи , но есть какие - либо другие альтернативы , которые могут быть использованы на стороне сервера?
Преобразование машинописи в JavaScript
Машинописи компилятор построен в машинопись, и, следовательно, доступна в виде файла JS (tsc.js ) , который может быть запущен , используя только о какой - либо ES3-compiliant реализации VM или JS.
Тем не менее, существующая инфраструктура компилятора файл ввода / вывода поддерживает только узел и интерфейсы файлов хоста сценариев Windows. Если вы хотели бы рекомендовать для поддержки другой среды, не стесняйтесь обратиться к команде на нашем сайте GitHub (ранее CodePlex )
Может быть, это не ответ, который вы хотите, но как уже упоминалось, все, что компилятор является JS-файл, поэтому, ваши варианты являются варианты выполнения файла JS.
В Windows есть 2 очевидные, Node, и для Windows Script Host.
Вы знаете о том узле уже, другой вариантом является компонентом, который поставляется со всеми версиями Windows (я думаю), вы можете сделать это следующим образом:
cscript path/to/tsc.js source-file.ts
Вы можете увидеть все опции компилятора просто:
cscript path/to/tsc.js
В Linux я предполагаю, что вы должны быть в состоянии использовать (в дополнение к узлу):
- V8 автономный корпус, заменить
nodeилиcscriptсv8-shell - ExecJS https://github.com/sstephenson/execjs
Любой другой JS бегун доступны на выбранной платформе (другой ответ упоминается Rhino, например)
Обновление: Другой ответ предполагает , что компилятор API совместим только с узлом и Windows Script Host (Cscript инструмент), поэтому, если правильно, то на Linux вам нужно Node скомпилировать машинопись.
Если вы ищете что - то вроде apt get tsc(или независимо от того, что менеджеры пакетов Linux / Mac, как), я думаю , что нет.
Я помню, что читал где-то, что I / O оптимизировано для узла и сервера сценариев Windows, поэтому, если у вас есть проблемы с опциями, вы, вероятно, в конечном итоге с узлом, если ищет независимости от платформы.
Обновление: Другой ответ здесь подтверждает то же самое о совместимости.
В частности, на сервере (если ваш сервер имеет Node.js доступный), вы просто запустите:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
Вы можете использовать эту команду без ввода имен файлов, чтобы увидеть помощи командной строки для tsc.js.
У меня есть проект, который компилируется транскрипт Javascript в Java:
https://github.com/martypitt/typescript4j
Как уже говорилось в других ответах, это делает использование Rhino, поэтому не имеет зависимостей npmили node.
Вот пример:
// 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'));
Я использую его в другом проекте - «пекарню» для выполнения на лета компиляции машинописи ресурсов в пружине сред
Если это Java, что вы должны быть ориентированы на то вы можете запустить tsc.js с двигателем Rhino как часть процесса сборки.
Для компиляции ц -> JS: узел доступен для всех распространенных платформ, так что я не понимаю, почему вы хотите иметь tsc.java, когда у вас уже есть tsc.js. Установка узла не большое дело. На самом деле, это проще, чем Java.
Если у вас есть файл proj.js, вы можете скопировать его, к которому когда-либо развертыванию платформы вы хотите использовать.
С моей точки зрения, JavaScript - точнее ECMAScript является альтернативой Java. Так что я рад, что я не пререкаться JVM и т.д., чтобы использовать инструмент. Но если вы предпочитаете Java, то почему даже возиться с JS?
Я играл вокруг с этим, и может составить машинопись с JavaScript следующим кодом:
<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>
Это не совсем идеально, хотя. Я пытаюсь получить что-то работает, так что я могу преобразовать транскрипт JS в C # (с помощью Javascript .NET), но я получаю переполнение стека на вызове ts.addUnit.
Это то, что работает для меня:
Во- первых, установлен typescript модуль узла >> npm install -g typescript. Это дает утилиту командной строки tsc.
Следующий, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- это будет и файлы и . Мы поставляем файл в качестве ссылки для правильного transpilation.
transpilegulpfile.tsgulp-config.tsgulpfile.jsgulp-config.jstypings/tsd.d.ts typescriptМодуль узла включает множество опций >>tsc -hуказать выходной каталог или файл, и т.д. .
Надеюсь это поможет.
SublimeText2 Trick Вы можете transpile машинописи в JavaScript непосредственно из SublimeText2 (вам нужен узел):
Создайте Typescript.sublime-buildфайл /Sublime Text 2/Packages/Userс этим содержимым:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
то теперь вы можете transpile код с Ctrl + B или Cmd + B













