2

我试图弄清楚如何以编程方式将打字稿文件呈现为 javascript 文件。

这可能与 ts-node 一起做吗,例如:

function tsMiddleware (req, res, next) {
    var parsed = require('url').parse(req.url);

    if (parsed.pathname.match(/\.ts$/)) {
        return ts(parsed.pathname).then(function (o) {
            res.setHeader('Content-Type', 'text/js');
            res.end(o.js);
        }).catch((err) => {
            console.log(err);
        });
    }
    next();

    function ts(src) {
        return new Promise((resolve, reject) => {
            require('ts-node').render({
                file: 'src' + src
            }, function (err, res) {
                if (err) {
                    reject(err);
                } else {
                    resolve(res);
                }
            });
        });
    }
}

我不想在 nodejs 中执行 ts 文件,而只是编译 ts 文件并将输出发送回浏览器。

4

1 回答 1

5

这是一个例子:

const ts = require("typescript")
async function tsTranspile(tsCode) {
    return await ts.transpileModule(tsCode, { /* Here the compiler options */ })
}

如何使用它:

tsTranspile("const f = a => a + 1")
    .then(jsCode => console.log(jsCode))
    .catch(err => console.log("Error:", err))

另请阅读:

于 2018-01-03T10:07:31.773 回答