lamdba函数中警告中的阴影变量

时间:2019-02-12 14:12:04

标签: typescript tslint

我在Typescript项目上使用tslint,并且经常收到有关lamdba函数中阴影变量的警告。

这是一个例子:

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

此处是关于page变量的警告。

我已经更改了此设置,因为我发现它的样式不好,并且在此处难以重用页面变量名,但是我想知道这是否可能会导致错误,或者这仅仅是样式/理解问题?案例。我知道影子变量通常会在其他情况下产生错误。

有人举一个例子说明这里可能出什么问题吗?

1 个答案:

答案 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*/