6

有没有办法将包含 TypeScript 的字符串编译为其等效的 JavaScript字符串?

例如,在 Coffeescript(和 LiveScript、coco 等)中,它是一个(简化的)单行:

jsCompiledCode = require('coffee-script').compile('do -> console.log "Hello world"', {bare:true});

可以为 TypeScript 实现类似的东西,最好不涉及文件系统吗?引用其他必须在编译时解决的模块是否有任何影响?

4

2 回答 2

4

您可以使用 TypeScript.Api nodejs 包:https ://npmjs.org/package/typescript.api

特别检查此功能:https ://github.com/sinclairzx81/typescript.api#compile

于 2013-07-31T09:14:18.267 回答
4

你可以使用transpileModule()TypeScript 自带的方法。

$ npm install typescript
// compile.ts

import * as ts from "typescript";

function tsCompile(source: string, options: ts.TranspileOptions = null): string {
    // Default options -- you could also perform a merge, or use the project tsconfig.json
    if (null === options) {
        options = { compilerOptions: { module: ts.ModuleKind.CommonJS }};
    }
    return ts.transpileModule(source, options).outputText;
}

// Make sure it works
const source = "let foo: string  = 'bar'";

let result = tsCompile(source);

console.log(result); // var foo = 'bar';

编译时,您需要将 tsconfigmoduleResolution设置为"Node".

这将编译/执行上面的示例文件。

$ tsc compile.ts --moduleResolution Node && node compile.js

还有一些文档

于 2021-02-03T19:54:04.083 回答