在angular/typescript中将类创建为Iterable

在angular/typescript中将类创建为Iterable,angular,typescript,iterable,Angular,Typescript,Iterable,我已经在angular中创建了一个类,现在当我通过store subscription获取对象时,虽然它返回一个对象数组,但我不能在返回的对象上使用forEach循环 是的,我已经使用了Object.keys(user).forEach(){..}它正在工作,但是我想通过使类Iterable做同样的事情。如何解决这个问题 示例代码:- class user { ... } ngOnInit(){ storeSubsc = this.store.select('users').su

我已经在angular中创建了一个类,现在当我通过store subscription获取对象时,虽然它返回一个对象数组,但我不能在返回的对象上使用forEach循环

是的,我已经使用了Object.keys(user).forEach(){..}它正在工作,但是我想通过使类Iterable做同样的事情。如何解决这个问题

示例代码:-

class user {
    ...
}
ngOnInit(){
    storeSubsc = this.store.select('users').subscribe(user => {
        this.user = user;
    });
}

login(){
    Object.keys(this.user).forEach()... --> working fine
    I want it like
    this.user.forEach() {... }
}

提前感谢…

您可以使用
for in
运算符:

class User {
  // 
}

const user = new User(/*args*/); 
for (let prop in user) {
  console.log(prop, user[prop]);
}
此外,您可以检查类实例是否将
prop
作为其自己的属性
user.hasOwnProperty(prop)
放在
for in
循环中。例如,如果您的
User
类扩展了另一个基类,并且没有选中
hasOwnProperty
,您也将看到
构造函数

class BaseUser {
  constructor(public x, public y) { }
}

class User extends BaseUser {
  constructor(public a, public b, public x, public y) {
    super(x, y);
  }
}

const user = new User('12', 2, 111, 222); 
for (let prop in user) {
  alert(prop);
}

您将看到五个警报:
x、y、a、b、constructor

为了使您的类具有可移植性,您的类需要有一个
符号的方法。迭代器

class User implements Iterable<string> {
    // ...
    constructor(private username: string, private password: string) { }

    *[Symbol.iterator](): Iterator<string> {
        for (let key of Object.keys(this)) {
            yield key;
        }
    }
}

const u = new User('blabla', '1234');
for (let k of u) {
    console.log(k);
}
类用户实现Iterable{
// ...
构造函数(私有用户名:string,私有密码:string){}
*[Symbol.iterator]():迭代器{
for(让Object.keys的键(this)){
屈服键;
}
}
}
const u=新用户('blabla','1234');
for(让k代表u){
控制台日志(k);
}

在本例中,我使用了一个生成器函数。

如果我错了,请纠正我的错误,您希望实现的是
这个.user
的键,而不是使用
Object.keys()
?是的,类似于这样的.user.forEach(ele=>{console.log(ele):}(请注意浏览器支持,IE对此一无所知)