Теневая переменная в предупреждении в функции lamdba - PullRequest
0 голосов
/ 12 февраля 2019

Я использую tslint в проекте Typescript и часто получаю предупреждения о теневых переменных в функциях lamdba.

Вот пример:

const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);

Здесь предупреждение касается переменной page.

Я уже изменил это, потому что нахожу, что это в плохом стиле исбивает с толку повторное использование имени переменной страницы здесь, но мне интересно, может ли это создать ошибку или это просто проблема стиля / понимания в этих случаях .Я знаю, что теневые переменные часто могут создавать ошибки в других обстоятельствах.

Есть ли у кого-нибудь пример того, что конкретно может пойти не так?

1 Ответ

0 голосов
/ 12 февраля 2019

Не совсем нет.Единственный способ, которым скрытая переменная может вызвать ошибки, - это если вы не хотели скрывать переменную.Очень надуманный пример:

const factors = [ 1, 2, 3, 4 ]
const factor = 5
const factorsMultiplied = factors.map(factor => factor * factor) 
// [ 1, 4, 9, 16 ] but expected [ 5, 10, 15, 20 ]

Пока вы уверены, что вам не нужен доступ к переменной, которую вы затеняли, в замыкании, которое вы затеняли, вы не столкнетесь с какой-либо страннойповедения.

Если вы хотите отключить правило в некоторых случаях, вы можете сделать это:

/*tslint:disable:no-shadowed-variable*/
const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);
/*tslint:enable:no-shadowed-variable*/
...