如何避免打字稿中未使用的参数出现虚假警告 [英] How to avoid spurious 'unused parameter' warnings in TypeScript

查看:20
本文介绍了如何避免打字稿中未使用的参数出现虚假警告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到过很多这样的情况,最终决定找出正确的方法。如果我有一个声明方法的抽象父类,然后一些具体的子类在其实现中实现真正的逻辑(显然,使用方法参数),但一些子类不需要在该方法中做任何事情(所以不要使用方法参数)--那些不需要做任何事情的子类在我的代码中生成虚假的(在我看来)警告。

例如,如果我有一些如下所示的类:

abstract class Child {
  constructor(protected name: string) {
    connsole.log(name + " was just born.");
  }

  abstract tellThemToDoSomething(command: string);
}

class GoodChild extends Child {
  constructor(name: string) { super(name); }
  tellThemToDoSomething(command: string) {
    console.log("I will do " + command);
  }
}

class BadChild extends Child {
  constructor(name: string) { super(name); }
  tellThemToDoSomething(command: string) {
    // bad children just ignore what their parents tell them
  }
}

然后我得到一个(TSLint?JSLint?WebStorm?)WebStorm中有关BadChildtellThemToDoSomethign()方法中未使用的参数的警告。

我知道有几个选择,但没有一个看起来很好。

1)忽略它(但这似乎不太理想,因为我会对真正的警告视而不见)

2)从BadChild的方法实现中删除参数(但不幸的是,这会删除有用的信息,因为我以后可能想要实现它,并且没有签名会使实现变得更加困难,而且我还会收到调用者的错误,因为调用者希望有参数-尽管考虑到我应该能够在JavaScript中调用带有无关参数的方法,我相信有一种方法可以绕过这个问题)

3)告诉WebStorm(TSLint)停止对未使用的参数发出警告(但这似乎不太理想,因为在其他实际问题情况下我不会收到警告)

4)对参数做一些没有意义的事情,这样它就不会被闲置(显然不是很好)

有经验的Java/TypeScrip程序员在这种情况下会做什么?在这种情况下,有没有简单的方法让WebStorm/TSLint忽略该参数?或者,更好的方法是告诉它忽略抽象方法的子类实现中未使用的参数,只要某些实现实际使用这些参数?

但是,我有点不确定警告来自哪里,因为我简短的Google搜索显示了一个针对未使用的变量但不是未使用的参数的TSLint警告,并且添加// tslint:ignore-next-line:no-unused-parameter(或no-unused-variable)并没有使警告消失。所以我猜这可能是来自WebStorm本身的警告?此外,警告是"未使用的参数foo:检查要在给定文件范围内使用的JavaScript参数、局部变量、函数、类和私有成员声明"。因此,它看起来不像是TSLint警告。如果我查看我的WebStormPreferences -> Languages & Frameworks -> Javascript -> Code Quality Tools,没有一个链接器被启用(JSLint、JSHint、ESLint等)。那么你知道错误是从哪里来的吗?

我还没有在打字稿中编码足够长的时间,无法感觉到此警告上的理想拨号应该是什么。

推荐答案

此警告是由JetBrains PhpStorm/WebStorm检查引起的。

由TypeScrip正确处理的常规方法是underscore unused parameters。不幸的是,JetBrains IDE不支持这一约定。

在某些情况下,可以使用Alt+Enter/⌥+Enter触发建议列表,然后选择抑制FOR语句(这对我的IDE检查从来不起作用)。

可以suppress inspections in inspections results

这会导致在方法上方添加注释,并影响此方法签名中所有未使用的参数:

// noinspection JSUnusedLocalSymbols
tellThemToDoSomething(_command: string) {}

这可以添加到活动模板等。

这篇关于如何避免打字稿中未使用的参数出现虚假警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆