【问题标题】:Typescript complains on promise.then打字稿抱怨promise.then
【发布时间】:2018-10-14 18:03:10
【问题描述】:

考虑以下代码:

Promise.resolve('hello')
    .then(a => console.log(a))
    .catch(() => console.log("error"))
    .then(() => console.log("ok"));

这给我带来了一个非常烦人的错误:

提供的参数与调用目标的任何签名都不匹配: 预期 0 个参数,但使用 1 个参数调用

请注意,我只为第一个.then(...) 得到这个,catch 和第二个 then 显然没有问题。

仅作记录;代码工作和输出

hello
ok

也许我还应该提到它实际上可以编译。我在 Visual Studio 2017 中看到错误。当我转到 then 的定义时,它会打开 lib.es6.d.ts。使用 TypeScript 2.8.3 的 webpack 4 进行编译。在 Visual Sudio 中,我安装了 TypeScript 2.8.1(找不到 2.8.3)

如果有人可以向我解释为什么会发生这种情况。更好的是,如何摆脱它;将不胜感激。

【问题讨论】:

  • 无法复制。你使用的是什么版本的 TypeScript?您确定此错误消息来自 TypeScript 而不是来自 linter 吗?
  • 这不能被复制,应该可以按预期工作,typescriptlang.org/play/…。直接在 VS 外部使用 tsc 不会出现此错误,是吗?
  • @str: 据我所知没有配置短绒,类型脚本版本是 2.8.3
  • @estus:不,这似乎是一个 VS 问题。当我运行 tsc 时,我在文件 node_modules/@types/react-hot-loader/index.d.ts 中得到 3 个错误,但不是我在 VS 中看到的错误。
  • 也许尝试将函数体包裹在花括号中?即then(a => { console.log(a) } ).

标签: javascript visual-studio typescript promise es6-promise


【解决方案1】:

我遇到了同样的问题,正如@JBC 的评论所暗示的那样,它是由 ReSharper 引起的。就我而言,我运行的是一个相当旧的版本 (2017.1.1),因此更新到最新版本(或完全禁用它)修复了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2021-11-09
    • 2020-01-06
    • 2016-11-01
    • 2019-05-23
    • 2020-03-15
    相关资源
    最近更新 更多