Перечислять свойства объекта

Учитывая следующий класс, как я могу перечислить его свойства, то есть получить выходные данные, такие как [station1, station2, station3...]?

Я могу только видеть, как перечислить значения свойств, т.е. [null, null, null].

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

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

Ответ 1

У вас есть два варианта, используя Object.keys(), а затем forEach или используйте для/в:

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

(код на игровой площадке)

Ответ 2

С объектом Reflect вы можете получить доступ к любому объекту и изменить его программным способом. Этот подход также не выдает "Элемент неявно имеет тип" любой ", потому что выражение типа" строка "не может быть использовано для индексации ошибки типа" {} "".

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)

(код на детской площадке)