typescript - (TypeScript2) Kako proći kroz niz tipa sučelja?
Dok koristim for petlju, moj let objekt ima tip string, iako je objekt kroz koji iteriram tip definiran u sučelju.
Ispod je kod koji koristim. Kada pokušam pristupiti mapping.attribute koji je definiran na sučelju kao string, dobivam pogrešku [Property 'attribute' does not exist on type 'string'.]
Imam sljedeće sučelje i funkciju :
interface IMapping {
attribute: string;
property: string;
}
mapAttributes(mappings: IMapping[], values) {
for (let mapping in mappings) {
if (mapping.hasOwnProperty("attribute")) {
console.log(this.attributes.find(attribute => attribute.name === mapping.attribute).value);
}
}
}
Kako bi se for petlja trebala definirati da bih mogao koristiti svojstvo koje je definirano u mom sučelju?
Odgovor #1
Mogao sam pokrenuti tvoj primjer pri zamjeni
for (let mapping in mappings) {
s
for (let mapping of mappings) {
Odgovor #2
Došlo je do toga zbog for..of naspram for..in iskaza
I izjave for..of i for..in iteriraju kroz liste; vrijednosti preko kojih se iterira su međutim različite, for..in vraća popis ključeva objekta koji se iterira, dok for..of vraća popis vrijednosti numeričkih svojstava objekta koji se iterira.
Evo primjera koji pokazuje ovu razliku:
let list = [4, 5, 6];
for (let i in list) {
console.log(i); // "0", "1", "2",
}
for (let i of list) {
console.log(i); // "4", "5", "6"
}
