Typescript lambda函数中警告中的阴影变量
我在一个Typescript项目中使用了Typescript lambda函数中警告中的阴影变量,typescript,tslint,Typescript,Tslint,我在一个Typescript项目中使用了tslint,我经常收到关于lamdba函数中阴影变量的警告 下面是一个例子: const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber); 这里的警告是关于页面变量的 我已经改变了这一点,因为我发现在这里重复使用页面变量名的方式不好,令人困惑,但我想知道这是否会造成错误,或者在这些情况下这只是一个风格/理解问题。我知道阴影变量在其他情况下
tslint
,我经常收到关于lamdba函数中阴影变量的警告
下面是一个例子:
const page = this.currentDocument.pages.find(page => page.pageNumber === pageNumber);
这里的警告是关于页面
变量的
我已经改变了这一点,因为我发现在这里重复使用页面变量名的方式不好,令人困惑,但我想知道这是否会造成错误,或者在这些情况下这只是一个风格/理解问题。我知道阴影变量在其他情况下经常会产生bug
有没有人举过一个例子来说明这里可能出现的问题 不完全是。隐藏变量导致错误的唯一方式是如果您不是有意隐藏该变量。一个非常做作的例子:
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*/
我知道这不是重复的,因为在重新声明现有常量变量时,它涉及影子变量,而不是在lambda函数中。