कोणीय में Iterable के रूप में वर्ग बनाने / टाइपप्रति

वोट
1

मैं कोणीय में एक वर्ग है, बनाया है अब जब मैं दुकान सदस्यता के माध्यम से एक वस्तु लाने, हालांकि यह वस्तु की एक सरणी देता है, लेकिन मैं वापस आ वस्तु पर foreach पाश का उपयोग नहीं कर सकते हैं।

हाँ, मैं का इस्तेमाल किया है Object.keys (उपयोगकर्ता) .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() {... }
}

अग्रिम में धन्यवाद...

24/08/2018 को 11:47
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
2

अपनी कक्षा iterable होने के लिए आदेश में, अपने वर्ग की एक विधि की जरूरत है Symbol.iterator:

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);
}

इस मामले में मैं एक जनरेटर समारोह का इस्तेमाल किया।

24/08/2018 को 12:16
का स्रोत उपयोगकर्ता

वोट
1

आप उपयोग कर सकते हैं 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आप देखेंगे constructorके रूप में अच्छी तरह से:

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

24/08/2018 को 12:10
का स्रोत उपयोगकर्ता

वोट
-1

कुछ इस तरह ?

class User {
  constructor(public id: number, public name: string) {}

  iterate(callBack: Function) {
    return Object.keys(this).forEach(key => callBack(this[key]));
  }

}

const user = new User(1, 'Foo Bar');
user.iterate(item => console.log(item));
24/08/2018 को 11:59
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more