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

135
Visualizações
JSDoc anula el tipo de retorno del método de clase heredado

Estoy tratando de proporcionar un tipo de retorno dinámico para un método heredado al pasar la clase secundaria al padre. Encuentre un pequeño ejemplo a continuación. Actualmente no está funcionando y estoy pensando que no estoy muy lejos.

Soy consciente de que una solución es declarar manualmente que cada método heredado en cada clase secundaria es una opción, y simplemente llamar a super() desde adentro, pero esa no es una solución tan elegante como esperaba.

Espero que alguien pueda ayudarme a descubrir los tipos genéricos o si es posible.

Gracias por adelantado:

 /** * The Animal base class * @class */ class Animal { /** * @param {T} classType */ constructor (classType) { this.classType = classType } /** * @returns {T} A baby of the same type as the parent instance */ giveBirth () { return new this.classType() } } /** * The Dog class * @class * @extends Animal */ class Dog extends Animal { constructor () { super(Dog) } bark () { return 'woof' } } const dog = new Dog() const babyDog = dog.giveBirth() babyDog.bark() // JSDoc does not consider it an instance of Dog
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Agregar @template para Animal y la extensión correcta ( @extends Animal<Dog> ) funciona para mí

 /** * The Animal base class * @class * @template T */ class Animal { /** * @param {T} classType */ constructor (classType) { this.classType = classType } /** * @returns {T} A baby of the same type as the parent instance */ giveBirth () { return new this.classType() } } /** * The Dog class * @class * @extends Animal<Dog> */ class Dog extends Animal { constructor () { super(Dog) } bark () { return 'woof' } } const dog = new Dog() const babyDog = dog.giveBirth() babyDog.bark()
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