当我编译我的typescript项目时,我使用noImplicitAny
选项,这样我就不会忘记指定变量和参数的类型。
然而,有时候你会有一些不用的参数,例如:
jQuery.ajaxTransport("+*", function (options: JQueryAjaxSettings) {
return {
abort: function (_, callback: JQueryCallback) {
我对abort函数的第一个参数不感兴趣,所以我忽略它,将其命名为_。
在TypeScript中,这是正确的方法吗?我在指南中找不到它。我怀疑这不是正确的方法,因为我只能命名一个参数_。
Typescript引发以下错误:
错误TS7006:参数“_”隐式具有“any”类型。
我可以直接输入_:any
,但对于我不使用的参数来说,这似乎有点过头了。
3条答案
按热度按时间yhxst69z1#
我也遇到了同样的问题。使用say express和routing,你通常只想要res参数。
您使用_的想法在这里很有效,但我也发现这样做也很有效。
这似乎更好,因为我认为只使用'_'可能会使使用lodash/下划线有点混乱,而且它也使它明显是您感兴趣的第四个参数。
更新:我已经很久没有发布这个答案了,在评论中我得到了一些误解。所以我想澄清一下。
使用下划线技巧在Typescript中仍然非常有用。就像我在最初的答案中提到的,假设你使用express并执行
app.get('/', (req, res) => {
,你会得到一个'req' is declared but its value is never read
的警告,但是如果你执行-〉app.get('/', (_req, res) => {
,警告就会消失。你不应该得到error TS7006: Parameter 'req' implicitly has an 'any' type.
错误,因为@types/express
应该隐式地输入这个参数。请注意第二个答案,使用
{}
作为参数,可能看起来很酷,但是它相当慢,所以我个人会小心使用内部紧循环。icnyk63a2#
我可能会迟到,但我被其他解决方案卡住了,这一个对我来说一直有效:
比较
在使用
_0
、_1
、...解决方案时,我遇到了一些与scooped函数有关的困难,例如:但是对于空的对象它工作得很好:
即使参数的类型如下:
编辑:
正如这里所写的,如果给定的参数是
undefined
或null
,设置默认值可以避免抛出错误。xggvc2p63#
这是绝对邪恶的,但你可以使用这个: