lambda函数中的阴影变量警告

问题描述 投票:1回答:1

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

这是一个例子:

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

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

我已经改变了这一点,因为我发现它的风格很糟糕,并且在这里重复使用页面变量名称令人困惑,但我想知道这是否会产生错误,或者这只是这些情况下的样式/理解问题。我知道阴影变量通常会在其他情况下产生错误。

有人在这里有一个可能出错的例子吗?

typescript tslint
1个回答
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*/
© www.soinside.com 2019 - 2024. All rights reserved.