2017-09-24 89 views
0

我在一家打字稿项目中使用TSLint和它下面的代码抱怨变量i打字稿阴影变量

for (let i = 0; i < body.children.length; i++) 
    { 
     body.children[i].classList.remove('active'); 
    } 

该消息是'Shadowed variable: 'i' (no-shadowed-variable)'

这有什么不对的循环,在TS中执行for循环的正确方法是什么?

+1

你添加这个方法的所有代码?你有另一个我在你的代码?你可以尝试重命名我和所有的解决方案之一应该很好。 –

回答

2

遮蔽意味着声明已经在外部范围内声明的标识符。由于这是一个linter错误,它本身并不正确,但可能会导致混淆,并且会使循环内部不可用外部i(它被循环变量遮蔽)。

您可以重命名无论是i变量,但如果你添加规则"prefer-for-of": truetslint.json,TSLint会建议在这种情况下,一个优雅的解决方案:

for (const child of body.children) { 
    child.classList.remove('active'); 
} 

(前提child尚未已经声明:-)

莫非