在angular/typescript中将类创建为Iterable
我已经在angular中创建了一个类,现在当我通过store subscription获取对象时,虽然它返回一个对象数组,但我不能在返回的对象上使用forEach循环 是的,我已经使用了Object.keys(user).forEach(){..}它正在工作,但是我想通过使类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
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对此一无所知)