Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

166
Vistas
¿Cómo usar Object.defineProperty para getters en Typescript?

He usado una implementación como se indica a continuación en JavaScript.

 class Base { installGetters() { Object.defineProperty(this, 'add', { get() { return 5; } }); } } class New extends Base { constructor() { super(); this.installGetters(); } someAddition() { return 10 + this.add; } }

Definí la propiedad getter add en la función de la clase principal - Base y usé esa propiedad en la clase secundaria New después de llamar a la función installGetters() en el constructor de la clase secundaria. Esto funciona para JavaScript, pero this.add arroja un error en el caso de Typescript. Cualquier ayuda sería muy apreciada.

Mi principal motivación para hacer esto es que quiero pasar un objeto a installGetters() para que pueda generar múltiples getters con las claves de objeto como nombres de getter y los valores devueltos por las funciones de getter correspondientes.

Esto funciona en JavaScript, por lo que mi principal curiosidad es si esto no es posible en TypeScript o si estoy haciendo algo mal.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aunque este es un patrón bastante extraño, proporcionaré una respuesta a su pregunta real.

TypeScript no es lo suficientemente inteligente como para inferir el tipo Base real en función de un método llamado en un constructor de subclase, por lo que debe declare :

 declare readonly add: number;

patio de recreo mecanografiado

about 4 years ago · Juan Pablo Isaza Denunciar

0

Habiendo aplicado la herencia, sugeriría usar protected :

los miembros protegidos solo son visibles para las subclases de la clase en la que están declarados.

 class Base { protected add!: number; installGetters() { this.add = 5; } }

Problema relacionado con su problema: https://github.com/microsoft/TypeScript/issues/28694

about 4 years ago · Juan Pablo Isaza Denunciar

0

La razón de esto es probable que TypeScript no sepa sobre el captador que agregó. No hay que escribir mecanografiado que indique que este captador existe y el mecanografiado no puede saber mágicamente que agregó la función de captador y cómo se vería. O define el getter en la clase base o, en caso de que esto no sea posible, probablemente no haya otra forma que convertir esto en cualquiera.

 someAddition() { return 10 + (this as any).add }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda