Использовать компилятор TypeScript из node

Это довольно легко сделать с кофе - script.

var coffee = require('coffee-script');
coffee.compile("a = 1");
//=> '(function() {\n  var a;\n\n  a = 1;\n\n}).call(this);\n'

Есть ли способ сделать это с помощью typescript?

Изменить: также размещен на codeplex

Ответ 1

Кажется, что в настоящее время существует более простое решение, которое вы можете сделать:

let ts = require('typescript');
let source = ts.transpileModule('class Test {}', {}).outputText;

Это приводит к:

"use strict";
var Test = (function () {
    function Test() {
    }
    return Test;
}());

Ответ 2

Поскольку TypeScript модуль NPM не экспортирует какой-либо общедоступный интерфейс, единственным способом сделать это в настоящее время является выполнение процесса tsc.

var exec = require('child_process').exec;

var child = exec('tsc main.ts',
                function(error, stdout, stderr) {
                    console.log('stdout: ' + stdout);
                    console.log('stderr: ' + stderr);
                    if (error !== null) {
                      console.log('exec error: ' + error);
                    }
                });

Была открыта проблема для запроса открытого интерфейса для модуля TypeScript.

Ответ 3

better-require может помочь вам в этом.

Он позволяет вам запрашивать() typescript файлы - не требуется предварительная компиляция - и множество других форматов файлов (coffeescript, clojurescript, yaml, xml и т.д.)

require('better-require')();
var myModule = require('./mymodule.ts');

Раскрытие информации: я написал лучше-требую.

Ответ 4

Отметьте этот проект github от niutech, он может конвертировать код TypeScript в JS-код на лету в браузере, но я думаю, его можно легко изменить для работы в node.js.

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

Ответ 5

Не отвечая на вопрос напрямую, но поскольку Googling для "запускать TypeScript из node напрямую" вызывает эту страницу StackOverflow, я полагаю, что я должен добавить, что вы можете сделать это с помощью ts- node: https://github.com/TypeStrong/ts-node