Webstorm: Запоминание хитростей получателей, предупреждающих о "свойстве только для чтения"
Фон
Когда я использую запомненный геттер, как это:
var myModule = {
get foo () {
delete this.foo;
return this.foo = 'something'
}
};
в Webstorm я получаю предупреждение:
Недвижимость только для чтения
Вопрос
Почему я получаю это предупреждение и могу ли я заставить его исчезнуть?
2 ответа
Кажется, WebStorm показывает предупреждение, потому что присвоения свойствам доступа без установщика игнорируются в нестрогом режиме и генерируются в строгом режиме.
И это действительно может быть проблемой, если вы хотите изменить значение foo
но получатель еще не был вызван.
Следовательно, лучшей практикой может быть определение сеттера тоже
var myModule = {
set foo (val) {
delete this.foo;
this.foo = val;
},
get foo () {
delete this.foo;
return this.foo = 'something';
}
};
Тогда WebStorm должен распознать установщик и, следовательно, не показывать предупреждение.
Вы можете подавить самоанализ WebStorm следующим образом:
var myModule = {
get foo () {
delete this.foo;
//noinspection JSUnresolvedVariable
return this.foo = 'something'
}
};
Но я считаю, что это плохая практика, и вам следует избегать этого, если только вам это не нужно.
Как я это узнал? В WebStorm есть аккуратный световой клуб, содержащий полезные советы почти для всех предупреждений и ошибок от Alt + Enter: