【发布时间】: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