14

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

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

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

编辑:发布在 codeplex

4

6 回答 6

16

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

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

这导致:

"use strict";
var Test = (function () {
    function Test() {
    }
    return Test;
}());
于 2015-12-04T12:49:18.237 回答
8

Better-require可以帮助您实现这一目标。

它可以让你 require() typescript 文件——不需要预编译——以及一堆其他文件格式(coffeescript、clojurescript、yaml、xml 等)

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

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

于 2012-11-01T14:55:05.023 回答
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);
                    }
                });

请求TypeScript 模块的公共接口的问题已打开。

于 2012-10-04T15:16:21.757 回答
6

查看niutech 的这个 github 项目,它可以在浏览器中即时将 TypeScript 代码转换为 JS 代码,但我想它可以很容易地修改为在 node.js 中工作。

我在我的受萤火虫启发的实时代码编辑器中调查支持 TypeScript 的可能性时发现了它。

于 2012-10-07T06:44:51.953 回答
4

没有直接回答这个问题,但是由于谷歌搜索“直接从节点运行 TypeScript”会打开这个 StackOverflow 页面,我想我应该补充一点,你可以用 ts-node 做到这一点:https ://github.com/TypeStrong /ts-节点

于 2016-01-15T17:16:57.827 回答
0

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

https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#user-content-transpiling-a-single-file

关于如何使用 TypeScript 编译器 API 编译 .ts 文件或 TS 项目的官方文档

https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#user-content-a-minimal-compiler

(后者不回答原始问题,但访问/修改 AST 然后转译为对象语言非常常见,因此它可能很有用)

于 2018-05-09T05:52:21.903 回答