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