我在Typescript项目上使用tslint
,并且经常收到有关lamdba函数中阴影变量的警告。
这是一个例子:
const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);
此处是关于page
变量的警告。
我已经更改了此设置,因为我发现它的样式不好,并且在此处难以重用页面变量名,但是我想知道这是否可能会导致错误,或者这仅仅是样式/理解问题?案例。我知道影子变量通常会在其他情况下产生错误。
有人举一个例子说明这里可能出什么问题吗?
答案 0 :(得分:1)
不是真的。带阴影的变量将导致错误的唯一方法是,如果您不打算将变量阴影化。一个非常人为的例子:
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*/