Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda