打字稿阴影变量

时间:2017-09-24 18:33:40

标签: typescript

我在TypeScript项目中使用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 个答案:

答案 0 :(得分:11)

阴影表示声明已在外部作用域中声明的标识符。由于这是一个linter错误,它本身并不正确,但它可能会导致混淆,并使外部i在循环中不可用(它被循环变量遮蔽。)

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

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

(已提供child尚未宣布: - )