Node.js 从节点使用TypeScript编译器

Node.js 从节点使用TypeScript编译器,node.js,typescript,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' 有没有办法用typescript做到这一点 编辑:同时由于TypeScript的NPM模块不导出任何公共接口,目前唯一的方法是执行tsc过程 var exec = require('child_process'

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

var coffee = require('coffee-script');
coffee.compile("a = 1");
//=> '(function() {\n  var a;\n\n  a = 1;\n\n}).call(this);\n'
有没有办法用typescript做到这一点


编辑:同时

由于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);
                    }
                });
已打开以请求的公共界面。

由niutech检查,它可以在浏览器中动态地将TypeScript代码转换为JS代码,但我想它可以很容易地修改以在node.JS中工作

我是在调查在我的live中支持TypeScript的可能性时发现它的。

可以帮助您实现这一点

它允许您需要()类型脚本文件(无需预编译)和一系列其他文件格式(coffeescript、clojurescript、yaml、xml等)


披露:我写了更好的要求。

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

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

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

没有直接回答这个问题,但由于谷歌搜索“直接从节点运行TypeScript”会出现这个StackOverflow页面,我想我应该补充一点,您可以使用ts节点来实现这一点:

关于如何使用TypeScript transpiler API从.ts文件生成JavaScript源的官方文档:


关于如何使用TypeScript编译器API编译.ts文件或ts项目以


(后者没有回答最初的问题,但访问/修改AST,然后将其转换为目标语言以使其可用是非常常见的)

TypeScript NPM模块似乎没有导出任何公共接口。我已经创建了。我还建议您看看这里的解决方案:@christorpappas这很有趣,我还计划用它来制作一个早午餐插件。你有回购协议,我可以去看看吗?他们在TypeScript 0.9中修复了吗?他们在TypeScript 2.0 beta中修复了吗?他们在TypeScript 2.2.1中修复了吗?他们在TypeScript 2.4 RC中修复了吗?(jk,他们早就解决了这个问题)注意:自从这个答案发布以来,ts.transfile已经被弃用了。以下是支持上述答案的一些源材料:@topek请随时用这些信息更新您的答案。@ShawnErquhart注意,ts.transfile被弃用,只是因为它已被更具扩展性的ts.transpileModule所取代。我相应地更新了答案。@AndrewFaulkner是的,这就是为什么我链接到transpileModule上的文档,认为发布答案的用户会更新。谢谢你。
"use strict";
var Test = (function () {
    function Test() {
    }
    return Test;
}());