我遇到了这一堆,最后决定弄清楚正确的做法是什么。如果我有一个声明一个方法的抽象父类,然后一些具体的子类在它们的实现中实现真正的逻辑(显然,使用方法参数),但是一些子类不需要在该方法中执行任何操作(因此不要使用方法参数) - 那些不需要执行任何操作的操作会在我的代码中生成虚假(在我看来)警告。
例如,如果我有一些看起来像这样的类:
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
}
}
然后我在WebStorm中获得了BadChild
tellThemToDoSomethign()
方法中未使用参数的警告(TSLint?JSLint?WebStorm?)。
我知道一些选项,但似乎都没有。
1)忽略它(但这似乎不是最理想的,因为我会对真正的警告视而不见)
2)从BadChild的方法实现中删除参数(但遗憾的是删除了有用的信息,因为我以后可能想要实现它,并且没有签名会使它变得更加困难,而且我也会从调用者那里得到错误作为参数 - 虽然我应该能够在JavaScript中调用一个带有无关参数的方法,但我可以解决这个问题。
3)告诉WebStorm(TSLint)停止对未使用的参数发出警告(但这似乎不是最理想的,因为我不会在其他实际问题情况下收到警告)
4)对参数做一些毫无意义的事情,因此它没有被使用(显然不是很好)
经验丰富的Java / TypeScript编码器在这种情况下做了什么?是否有一种简单的方法可以告诉WebStorm / TSLint在这种情况下忽略参数?或者,更好的方法是告诉它忽略抽象方法的子类实现中未使用的参数,只要一些实现实际使用参数?
我不太确定警告来自哪里,因为我的简短的谷歌搜索显示了对未使用的变量但未使用的参数的TSLint警告,并添加了// tslint:ignore-next-line:no-unused-parameter
(或{{1没有让警告消失。所以我猜这个警告可能来自WebStorm本身?此外,警告是“未使用的参数Foo:检查JavaScript参数,局部变量,函数,类和私有成员声明将在给定的文件范围中使用”。所以它看起来不像TSLint警告。如果我查看我的WebStorm no-unused-variable
,则不会启用任何连接(JSLint,JSHint,ESLint等)。那么任何想法错误来自哪里?
我没有在TypeScript中编码足够长的时间来感受这个警告的理想拨号应该是什么。