如何将typescript async / await代码转换为javascript代码

时间:2018-04-13 06:39:23

标签: javascript node.js typescript async-await

我正在探索hap17 async / await。我的代码工作正常,但我很好奇为什么它以不同的格式转换ts代码。意味着如果我没有在tsconfig文件中设置"module": "commonjs",那么在tsc之后它会生成js代码,它将await转换为带有switch case的_awaiter。如果我设置"module": "commonjs",那么它将等待转换为yield。为什么会这样? 如果我想在js文件中转换相同的await怎么办?然后配置应该是什么?

我的tsconfig文件就像

`{
    "compilerOptions": {
        "outDir": "build",
        "sourceMap": true,
        "allowJs": true,
        "target": "es6",
        "removeComments": false,
        "noImplicitAny": false,
        "module": "commonjs",
    },
    "include": [
        "web/*.ts"
    ],
    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
}`

Ts文件代码

var server = new Hapi.Server({
  listener: http2.createServer(),
  host: 'localhost',
  port: 3000,
  tls: true,
})

const init = async () => {
    try {
      await server.register({register: routes, name: "test"})
      await server.start();
      console.log(`Server running at: ${server.info.uri}`);
    } catch (err) {
      console.log(err);
    }
};

init();

当我tsc时,我期待js文件中的代码也相同,即async / await。 但它将async await转换为以下格式

const init = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
    try {
        yield server.register({ register: base_route_1.default, name: "test" });
        yield server.start();
        console.log(`Server running at: ${server.info.uri}`);
    }
    catch (err) {
        console.log(err);
    }
});
init();

0 个答案:

没有答案