我在使用TSlint 时遇到问题,并理解为什么for(i=0; ...)不再允许循环。
假设我有一个简单的代码,例如:
this.filters['1','2','3'....];
for (let i = 0; i < this.filters.length; i++) {
if (this.filters[i] === '2') {
this.filters = new_value;
}
}
哪个TSlint要求我将其转换为for-of。但是,使用for-of是行不通的,因为我需要修改值,而 for-of 不允许修改。我可以使用类似的东西
for (const [i, el] of this.filters.entries()) {
但是后来我收到一个编译警告 TypeScript和 Iterator:Type'IterableIterator<T>'不是数组类型,我必须更改编译选项。此外,我可以迭代keys()我认为有点愚蠢的for(const i=0...)
有人可以解释我为什么TSlint仍然抱怨这个以及为什么不允许使用for(const i=0; ....)
此外,我刚刚看到如果在for-of 中执行此代码
this.filters['1','2','3'....];
for (let f of this.filters) {
if (f === '2') {
f = new_value;
}
}
我最终会得到相同的数组,因为它在循环后没有被修改,但是,如果我有类似的方法但有对象
let filters = [{id:'1'},{id:'2'},{id:'3'}];
console.log(filters)
for (let f of filters) {
if (f.id === '2') {
f.id = 'toto';
}
}
console.log(filters)
令人惊讶的是,我的对象数组在循环后被修改了!有人可以解释我为什么吗?
谢谢
我搜索了错误,我在 github 中看到它是一个已关闭的问题,但我找不到解决方案 https://github.com/palantir/tslint/pull/1813
跃然一笑
相关分类