Преобразование TypeScript в JavaScript - программирование
Подтвердить что ты не робот

Преобразование TypeScript в JavaScript

Мне интересно, как можно преобразовать TypeScript в JavaScript в кросс-платформенной манере. Я знаю о доступности менеджера пакетов node для typescript, но есть ли другие альтернативы, которые можно использовать на стороне сервера?

4b9b3361

Ответ 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, чтобы указать выходной каталог или файл и т.д.

Надеюсь, что это поможет.