【问题标题】:Shadow variable in warning in lambda functionlambda函数中警告中的阴影变量
【发布时间】:2019-07-06 05:05:36
【问题描述】:

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

这是一个例子:

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

这里的警告是关于 page 变量的。

我已经改变了这个,因为我发现它的风格很糟糕,并且在这里重用页面变量名会让人困惑,但我想知道这是否会造成错误,或者这只是一个风格/理解问题在这些案例。我知道影子变量在其他情况下经常会产生错误。

有没有人举例说明这里可能出现的具体问题?

【问题讨论】:

标签: typescript tslint


【解决方案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*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多