首页 > 解决方案 > 如何解决与错误相关的错误:打字稿中的 TS2705

问题描述

错误 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

解决方案


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

注入默认的库列表。注入的默认库是:

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

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

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

有两种方法可以做到这一点:

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

推荐阅读