Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

170
Views
Matriz de propiedades mecanografiadas de clase

Estoy tratando de hacer un bucle en cada propiedad de la clase desde un nuevo objeto, sin ningún conjunto de propiedades. Object.keys() devuelve una matriz vacía. Tal vez porque ninguna de las propiedades está establecida. ¿Conoce una forma de recorrer las propiedades de una clase o un nuevo objeto nuevo de esta clase?

 export class Perimeter { Id: string; Name: string; Description: string; Typapp: string; } var tmp = new Perimeter(); console.log('Object keys tmp', Object.keys(tmp)); //Object keys tmp []

El resultado que espero es ['Id', 'Nombre', 'Descripción', 'Typapp']

Gracias de antemano

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema es que no está inicializando esas propiedades, por lo que solo existen en el tipo, no en tiempo de ejecución. TypeScript le advertirá sobre eso, diciendo que nunca se han asignado definitivamente. Por ejemplo:

La propiedad 'Id' no tiene inicializador y no está definitivamente asignada en el constructor. (2564)

Ejemplo

Debe inicializar las propiedades para que existan en la instancia que está pasando a Object.keys . Puede hacerlo de un par de maneras diferentes. Una de ellas es usar el modificador public en los parámetros del constructor, que crea una propiedad pública y asigna automáticamente el valor del parámetro a esa propiedad:

 /*export*/ class Perimeter { constructor( public Id = "", public Name = "", public Description = "", public Typapp = "" ) { } } const tmp = new Perimeter(); console.log('Object keys tmp', Object.keys(tmp)); //Object keys tmp []

Ejemplo en vivo

(He incluido valores predeterminados allí porque ha mostrado una llamada al constructor que no proporciona ningún argumento).

Pero también puedes escribirlo explícitamente:

 /*export*/ class Perimeter { Id: string; Name: string; Description: string; Typapp: string; constructor(id = "", name = "", description = "", typapp = "") { this.Id = id; this.Name = name; this.Description = description; this.Typapp = typapp; } } const tmp = new Perimeter(); console.log('Object keys tmp', Object.keys(tmp)); //Object keys tmp []

Ejemplo en vivo

Para una clase que tiene propiedades con valores iniciales fijos y otras que están asignadas en el constructor, prefiero declararlas y luego asignar las que las necesitan en el constructor, pero para aquellas en las que todas las propiedades son parámetros del constructor, lo convierte en una taquigrafía útil. De cualquier manera, es una cuestión de estilo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!