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

174
Visualizações
¿Cómo puedo crear un tipo base de TypeScript que pueda ampliarse con otros tipos?

Estoy tratando de usar un módulo TypeScript de terceros y tengo problemas para crear un tipo abstracto que otros tipos puedan extender.

El tipo base Animal será Mamífero, Reptil o Anfibio.

El método de action de un ActionModule de terceros tomará un tipo ligeramente diferente como entrada para cada acción, pero quería crear un tipo base que se pueda proporcionar para la U genérica de ActionModule para mi tipo ACTIONS .

Esto es lo que tengo hasta ahora, que no parece funcionar (obtiene un error que dice que los tipos son incompatibles).

 type Animal = Mammal | Reptile | Amphibian; type Mammal = { name: string, furColor: number }; type Reptile = { name: string, scaleCount: number }; type Amphibian = { name: string; }; // Third-party module interface ActionModule<T = {}, U = {}> { description: string, action: (args: Arguments<U>) => void } const ACTIONS: { [key: string]: ActionModule<{}, Animal> } = { actionOne: { description: '', action: (args: Arguments<Mammal>) => {}, }, actionTwo: { description: '', action: (args: Arguments<Reptile>) => {}, }, actionThree: { description: '', action: (args: Arguments<Amphibian>) => {}, } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

TLDR:

 type Animal = Mammal & Reptile & Amphibian

Respuesta más larga:

Expandiendo y simplificando su código obtenemos:

 action: (args: Mammal | Reptile | Amphibian) => void

Lo que significa que el argumento de esta función puede tomar cualquiera de los tipos especificados en la unión. Por lo tanto, cada implementación de la interfaz debe admitir todos los tipos de unión .

En su lugar, puede fusionar las interfaces , lo que significa que el método puede admitir uno de los tipos . Más específicamente, permitirá un objeto que tenga al menos propiedades comunes de las interfaces.

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