【发布时间】:2020-05-29 18:22:45
【问题描述】:
我在 TypeScript 项目中使用 superagent 并安装了 @types/superagent,但我看到了一个我不明白的类型错误。鉴于以下...
const myRequest = request
.get('/path/to/api')
.end((err, res) => {
// Do stuff with err and res
})
err 和 res 出现以下错误:
Parameter 'err' implicitly has an 'any' type.ts(7006)
Parameter 'res' implicitly has an 'any' type.ts(7006)
但与此同时,TypeScript 似乎确实知道这些变量的类型,因为当我在 VSCode 中将鼠标悬停在它们上时,它会显示来自 @types/superagent 的正确类型,如下图所示。
在图像中,它显示它正确地从@types/superagent 获取res 的类型为request.Response。
因此,我不明白为什么会收到这些隐式类型错误。有人可以向 TypeScript 新手解释这一点吗?谢谢:)
【问题讨论】:
-
其实这不是新手。如果我正确理解你,那真的很奇怪,因为它同时告诉你它知道类型并且不知道类型。只是为了确认一下,那张截图都是一个片段,对吧?不是从不同的地方组装的?另外,如果您将鼠标悬停在
.end上,您会看到什么? -
请注意,VSCode 有自己的内置 TypeScript 版本,用于提供内联类型信息。默认情况下,它与磁盘上的不同。您是否尝试过重新启动 VSCode?这将迫使它重新扫描所有导入以获取类型信息。
-
我相信您在代码中的某处设置了“res:requset.Response”
-
@Mr.AF typescriptlang.org/play/#code/… typescript 应该可以推断出来,不需要重复两次。
-
@Mr.AF 如果您将回调的参数显式键入为
any,它仍然会通过,因为这两种函数类型仍然兼容。
标签: typescript visual-studio-code superagent