如何避免 TypeScript 中出现虚假的“未使用参数”警告

2024-05-14

我遇到过很多次这种情况,最后决定弄清楚正确的方法是什么。如果我有一个声明方法的抽象父类,然后一些具体子类在其实现中实现真正的逻辑(并且显然使用方法参数),但某些子类不需要在该方法中执行任何操作(因此不要使用方法参数) - 那些不必执行任何操作的方法会在我的代码中生成虚假的(在我看来)警告。

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

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 中收到一个 (TSLint? JSLint? WebStorm?) 警告,提示未使用参数BadChild tellThemToDoSomethign() method.

我知道一些选择,但似乎没有一个很好。

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

2)从BadChild的方法实现中删除参数(但不幸的是,这删除了有用的信息,因为我稍后可能想要实现它,并且那里没有签名会使它变得更加困难,而且我还从期望有参数的调用者那里得到错误- 虽然考虑到我应该能够在 JavaScript 中调用带有无关参数的方法,但我有办法解决这个问题)

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

4)对参数做一些无意义的事情,这样它就不会被使用(显然不是很好)

在这种情况下,经验丰富的 Java/TypeScript 程序员会做什么?有没有一种简单的方法可以告诉 WebStorm/TSLint 在像这样的个别情况下忽略参数?或者,更好的是,有一种方法告诉它忽略抽象方法的子类实现中未使用的参数,只要某些实现实际上使用了这些参数?

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

我使用 TypeScript 编写代码的时间还不够长,无法了解此警告的理想表盘应该是什么。


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

TypeScript 正确处理的一种传统方法是下划线未使用的参数 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#flag-unused-declarations-with---nounusedparameters-and---nounusedlocals。不幸的是,JetBrains IDE 不支持此约定。

有可能压制就地检查 https://www.jetbrains.com/help/phpstorm/suppressing-inspections.html#suppress-in-editor在某些情况下,通过触发建议列表Alt+Enter/⌥+Enter并选择抑制 for 语句(这对我的 IDE 检查从来不起作用)。

有可能抑制检查结果中的检查 https://www.jetbrains.com/help/phpstorm/suppressing-inspections.html#suppress-inspection-results.

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

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

这可以添加到实时模板等中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免 TypeScript 中出现虚假的“未使用参数”警告 的相关文章

随机推荐