Преобразование машинописи в JavaScript

голоса
17

Я задаюсь вопросом , как можно превратить машинопись в JavaScript в кроссплатформенных образом. Я в курсе о наличии узлового менеджера пакетов для машинописи , но есть какие - либо другие альтернативы , которые могут быть использованы на стороне сервера?

Задан 01/10/2012 в 19:16
источник пользователем
На других языках...                            


9 ответов

голоса
25

Машинописи компилятор построен в машинопись, и, следовательно, доступна в виде файла JS (tsc.js ) , который может быть запущен , используя только о какой - либо ES3-compiliant реализации VM или JS.

Тем не менее, существующая инфраструктура компилятора файл ввода / вывода поддерживает только узел и интерфейсы файлов хоста сценариев Windows. Если вы хотели бы рекомендовать для поддержки другой среды, не стесняйтесь обратиться к команде на нашем сайте GitHub (ранее CodePlex )

Ответил 01/10/2012 в 19:36
источник пользователем

голоса
12

Может быть, это не ответ, который вы хотите, но как уже упоминалось, все, что компилятор является 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, поэтому, если у вас есть проблемы с опциями, вы, вероятно, в конечном итоге с узлом, если ищет независимости от платформы.

Обновление: Другой ответ здесь подтверждает то же самое о совместимости.

Ответил 03/10/2012 в 04:23
источник пользователем

голоса
5

В частности, на сервере (если ваш сервер имеет Node.js доступный), вы просто запустите:

node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]

Вы можете использовать эту команду без ввода имен файлов, чтобы увидеть помощи командной строки для tsc.js.

Ответил 01/10/2012 в 23:39
источник пользователем

голоса
3

У меня есть проект, который компилируется транскрипт 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'));

Я использую его в другом проекте - «пекарню» для выполнения на лета компиляции машинописи ресурсов в пружине сред

Ответил 17/01/2013 в 08:35
источник пользователем

голоса
3

Если это Java, что вы должны быть ориентированы на то вы можете запустить tsc.js с двигателем Rhino как часть процесса сборки.

Ответил 02/10/2012 в 12:34
источник пользователем

голоса
2

Для компиляции ц -> JS: узел доступен для всех распространенных платформ, так что я не понимаю, почему вы хотите иметь tsc.java, когда у вас уже есть tsc.js. Установка узла не большое дело. На самом деле, это проще, чем Java.

Если у вас есть файл proj.js, вы можете скопировать его, к которому когда-либо развертыванию платформы вы хотите использовать.

С моей точки зрения, JavaScript - точнее ECMAScript является альтернативой Java. Так что я рад, что я не пререкаться JVM и т.д., чтобы использовать инструмент. Но если вы предпочитаете Java, то почему даже возиться с JS?

Ответил 02/10/2012 в 01:12
источник пользователем

голоса
1

Я играл вокруг с этим, и может составить машинопись с 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.

Ответил 02/10/2012 в 18:48
источник пользователем

голоса
0

Это то, что работает для меня:

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

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

Ответил 23/05/2016 в 04:47
источник пользователем

голоса
0

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

Ответил 02/10/2012 в 07:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more