使用咖啡脚本很容易做到这一点。
var coffee = require('coffee-script');
coffee.compile("a = 1");
//=> '(function() {\n var a;\n\n a = 1;\n\n}).call(this);\n'
有没有办法用打字稿做到这一点?
编辑:也发布在 codeplex
使用咖啡脚本很容易做到这一点。
var coffee = require('coffee-script');
coffee.compile("a = 1");
//=> '(function() {\n var a;\n\n a = 1;\n\n}).call(this);\n'
有没有办法用打字稿做到这一点?
编辑:也发布在 codeplex
似乎现在有一个更简单的解决方案,您可以这样做:
let ts = require('typescript');
let source = ts.transpileModule('class Test {}', {}).outputText;
这导致:
"use strict";
var Test = (function () {
function Test() {
}
return Test;
}());
Better-require可以帮助您实现这一目标。
它可以让你 require() typescript 文件——不需要预编译——以及一堆其他文件格式(coffeescript、clojurescript、yaml、xml 等)
require('better-require')();
var myModule = require('./mymodule.ts');
披露:我写了更好的要求。
由于 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 的这个 github 项目,它可以在浏览器中即时将 TypeScript 代码转换为 JS 代码,但我想它可以很容易地修改为在 node.js 中工作。
我在我的受萤火虫启发的实时代码编辑器中调查支持 TypeScript 的可能性时发现了它。
没有直接回答这个问题,但是由于谷歌搜索“直接从节点运行 TypeScript”会打开这个 StackOverflow 页面,我想我应该补充一点,你可以用 ts-node 做到这一点:https ://github.com/TypeStrong /ts-节点
关于如何使用 TypeScript transpiler API 从 .ts 文件生成 JavaScript 源的官方文档:
关于如何使用 TypeScript 编译器 API 编译 .ts 文件或 TS 项目的官方文档
https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#user-content-a-minimal-compiler
(后者不回答原始问题,但访问/修改 AST 然后转译为对象语言非常常见,因此它可能很有用)