Я столкнулся с этой кучей и наконец решил выяснить, как правильно это сделать. Если у меня есть абстрактный родительский класс, который объявляет метод, а затем некоторые из конкретных подклассов реализуют реальную логику в своей реализации (и, очевидно, используют параметры метода), но некоторые из подклассов не должны делайте что-нибудь в этом методе (поэтому не используйте параметры метода) - те, которые не должны ничего делать, генерируют ложные (на мой взгляд) предупреждения в моем коде.
Например, если у меня есть несколько классов, которые выглядят так:
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 для неиспользуемого параметра в методе BadChild
tellThemToDoSomethign()
.
Я знаю несколько вариантов, но ни один из них не выглядит великолепным.
1) Проигнорируйте это (но это кажется неоптимальным, так как я стану слепым к реальным предупреждениям)
2) Удалите параметр из реализации метода BadChild (но это, к сожалению, удаляет полезную информацию, так как я, возможно, позже захочу реализовать ее, и отсутствие там подписи усложняет задачу, и я также получаю ошибки от ожидающих там звонящих. быть параметрами - хотя, учитывая, что я должен иметь возможность вызывать метод с посторонними параметрами в JavaScript, я могу обойти эту проблему)
3) Скажите WebStorm (TSLint) прекратить предупреждение о неиспользуемых параметрах (но это кажется неоптимальным, поскольку я не получу предупреждения в других реальных проблемных ситуациях)
4) Сделайте что-нибудь бессмысленное с параметром, чтобы он не использовался (очевидно, не велик)
Что делают опытные Java / TypeScript-кодеры в подобных ситуациях? Есть ли простой способ сказать WebStorm / TSLint игнорировать параметр в отдельных случаях, как это? Или, что еще лучше, способ заставить его игнорировать неиспользуемые параметры в реализациях абстрактных методов подкласса, если некоторые реализации действительно используют параметры?
Я немного не уверен в том, откуда исходит предупреждение, так как мое краткое прибегание к поиску показывает предупреждение TSLint для неиспользуемых переменных, но не для неиспользуемых параметров, и добавление // tslint:ignore-next-line:no-unused-parameter
(или no-unused-variable
) не заставляйте предупреждение уходить. Так что, я думаю, возможно, предупреждение приходит от самого WebStorm? Кроме того, предупреждение «Неиспользуемый параметр Foo: проверяет параметр JavaScript, локальную переменную, функцию, классы и объявления закрытых членов, которые должны использоваться в данной области файла». Так что это не похоже на предупреждение TSLint. И если я загляну в свой WebStorm Preferences -> Languages & Frameworks -> Javascript -> Code Quality Tools
, ни один из линтеров не будет включен (JSLint, JSHint, ESLint и т. Д.). Так есть идеи, откуда исходит ошибка?
Я недостаточно долго программировал на TypeScript, чтобы понять, каким должен быть идеальный циферблат в этом предупреждении.