web-dev-qa-db-fra.com

Énumérer les propriétés sur un objet

Étant donné la classe suivante, comment puis-je énumérer ses propriétés, c’est-à-dire obtenir un résultat tel que [station1, station2, station3 ...]?

Je ne peux que voir comment énumérer les valeurs des propriétés, c'est-à-dire [null, null, null].

class stationGuide {
    station1: any;
    station2: any;
    station3: any;

    constructor(){
        this.station1 = null;
        this.station2 = null;
        this.station3 = null;
     }
}
46
George Edwards

Vous avez deux options, en utilisant Object.keys () puis forEach , ou utilisez for/in :

class stationGuide {
    station1: any;
    station2: any;
    station3: any;

    constructor(){
        this.station1 = null;
        this.station2 = null;
        this.station3 = null;
     }
}

let a = new stationGuide();
Object.keys(a).forEach(key => console.log(key));

for (let key in a) {
    console.log(key);
}

( code dans la cour de récréation )

82
Nitzan Tomer

Avec l'objet Reflect , vous pouvez accéder à n'importe quel objet et le modifier par programmation. Cette approche ne génère pas non plus d'élément "L'élément a implicitement un type" quelconque ", car l'expression de type" chaîne "ne peut pas être utilisée pour indexer le type" {} "".

class Cat {
  name: string
  age: number

  constructor(name: string, age: number){
    this.name = name
    this.age = age
   }
}

function printObject(obj: any):void{
  const keys = Object.keys(obj)
  const values = keys.map(key => `${key}: ${Reflect.get(obj,key)}`)
  console.log(values)
}

const cat = new Cat("Fluffy", 5)
const dog = {
  name: "Charlie",
  age: 12,
  weight: 20
}

printObject(cat)
printObject(dog)

( code dans la cour de récréation )

2
szuuuken