【问题标题】:'Promise' only refers to a type, but is being used as a value here'Promise' 仅指一种类型,但在此处用作值
【发布时间】:2018-03-09 10:43:19
【问题描述】:

错误: [js] 'Promise' 仅指一种类型,但在这里用作值。

我在 jsconfig.json 中设置了 "checkJS": true"jsx": "react"。这不适合ts。

async function readAsArrayBuffer(blob) {
return new Promise((resolve, reject) => {
         let reader = new FileReader();
         // @ts-ignore
        reader.addEventListener('load', e => resolve((e.target).result));
         // @ts-ignore
        reader.addEventListener('error', e => reject((e.target).error));
        reader.readAsArrayBuffer(blob);
    });
}

脚本当然工作得很好。

如何解决这个不必要的错误?

【问题讨论】:

  • 这里有什么可以帮助的吗?我不知道如何,以及是否? github.com/Microsoft/TypeScript/wiki/…
  • 提示:如果你想要一个 promise/arrayBuffer 构造一个新的 Response 并调用 arrayBuffer(): new Response(blob).arrayBuffer()

标签: javascript visual-studio-code create-react-app


【解决方案1】:

我希望您需要以 es6 为目标或使用 polyfill。我不使用 VisualStudio,但您的配置中添加的以下内容可能会启用 es6:

{
    "compilerOptions": { "target": "ES6" },
    //....
}

【讨论】:

  • 您所提供的帮助解决了 Promise 的问题。但它产生了一个不同的问题:加载 node_modules 模块和不带扩展名的模块以及通过文件夹加载的模块(您在其中输入文件夹路径并从该文件夹加载 index.js 文件)。据我了解,这些是 react-app 功能。至少我必须以某种方式从 node_modules 加载模块。
  • @lukaszpolowczyk 您可以查看compilerOptions 下的baseUrlpaths。否则,您可能需要开始一个新问题并提供更多详细信息。
  • 或者也许它可以以某种方式设置,以便 Promise 根本不会显示这样的错误?这样的东西,我就是不知道怎么用:github.com/Microsoft/TypeScript/wiki/…
  • 我使用" moduleResolution ":" node " 解决了模块的问题。现在没有错误了。唷。
猜你喜欢
  • 2018-08-07
  • 2018-02-15
  • 2020-04-28
  • 2021-08-23
  • 2020-12-05
  • 2018-03-31
  • 2023-04-03
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多