【问题标题】:How can I resolve the error related error:TS2705 in typescript如何解决与错误相关的错误:打字稿中的 TS2705
【发布时间】:2019-05-21 16:54:36
【问题描述】:

错误 TS2705:ES5/ES3 中的异步函数或方法需要“Promise”构造函数。确保你有一个 'Promise' 构造函数的声明,或者在你的 --lib 选项中包含 'ES2015'。

import * as Hapi from 'hapi';

import * as IConfig from 'config';
const config = JSON.parse(JSON.stringify(IConfig));

const serverConnections = config.server,
    server: Hapi.Server = new Hapi.Server(serverConnections);

export module Server {
  export const start = async () => {
    server.route({
      path: '/',
      method: 'GET',
      handler(request, h) {
        return "hello!!!"
      },
    });

    console.log('serverstart')
    server.start();
  }
}

【问题讨论】:

标签: typescript


【解决方案1】:

当您启动一个最小的新 TypeScript 项目时,您的 tsconfig.json 文件将接近于空。这意味着编译器不知道您选择的平台上可以使用哪些库。从本质上讲,您将或多或少地拥有一个基本版本的 javascript 以及您将 npm install 输入到依赖项中的任何库类型。通过准系统,我的意思是包含一些默认库。在撰写本文时,documentation 声明:

一个默认的库列表被注入。注入的默认库是:

  • 对于 --target ES5: DOM,ES5,ScriptHost
  • 对于--target ES6:DOM,ES6,DOM.Iterable,ScriptHost

因为您的示例代码中有一些使用 async 关键字的代码 - 这是 Promise API 周围的语法糖 - TypeScript 将尝试将其编译为 Promises。但是,您尚未列出您的平台可以支持的库。

为了告诉编译器你想要定位哪些 API,你需要给它一些提示。

有两种方法:

  1. 将"lib":["es2015"] 添加到您的tsconfig.json 文件中
  2. 使用 --lib 标志运行 typescript cli 命令,如下所示:tsc --lib ES2015

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多