从节点使用TypeScript编译器

Ili*_*oly 13 node.js typescript

使用咖啡脚本很容易做到这一点.

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

有没有办法用打字稿做到这一点?

编辑:发布在codeplex上

top*_*pek 14

现在似乎有一个更简单的解决方案,你可以这样做:

let ts = require('typescript');
let source = ts.transpileModule('class Test {}', {}).outputText;
Run Code Online (Sandbox Code Playgroud)

这导致:

"use strict";
var Test = (function () {
    function Test() {
    }
    return Test;
}());
Run Code Online (Sandbox Code Playgroud)


jos*_*hls 8

由于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);
                    }
                });
Run Code Online (Sandbox Code Playgroud)

已经打开一个问题来请求TypeScript模块的公共接口.


Oli*_*nde 8

better-require可以帮助您实现这一目标.

它允许你需要()typescript文件 - 不需要预编译 - 以及一堆其他文件格式(coffeescript,clojurescript,yaml,xml等)

require('better-require')();
var myModule = require('./mymodule.ts');
Run Code Online (Sandbox Code Playgroud)

披露:我写的更好 - 要求.


Edw*_*Yip 6

通过niutech 检查这个github项目,它可以在浏览器中动态地将TypeScript代码转换为JS代码,但我想它可以很容易地修改为在node.js中工作.

我在调查我的live,firebug启发的代码编辑器中支持TypeScript的可能性时发现了它.