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

107
Visualizações
Texto mecanografiado: extender la clase con el constructor Partial<Type>

Usando mecanografiado, ¿cómo se extiende la clase de usuario usando Partial<User> como constructor?

También estoy abierto a soluciones que no usen Partial . En este caso, solo estoy usando el tipo de utilidad para inicializar una clase en blanco. es decir new User({})

Actualmente, AdvancedUser solo tiene propiedades User , pero ninguna de las propiedades advanced?: .

 export class User { first_name: string = '' last_name: string = '' email: string = '' constructor(data: Partial<User>) { Object.assign(this, data) } } export class AdvancedUser extends User { advanced?: { foo?: string } constructor(data: Partial<User>) { super(data) } }

El código proporcionado realmente funciona. Mi proyecto sufría de un error tipográfico posterior que revertía mi llamada AdvancedUser() a User() .

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

También estoy abierto a soluciones que no utilicen Partial. En este caso, solo estoy usando el tipo de utilidad para inicializar una clase en blanco. es decir, nuevo usuario ({})

En lugar de tener constructores que usan Partial , puedes obtener el resultado que deseas usando la palabra clave as , que en mi opinión es mucho más clara.

En cuanto a la propiedad advanced , la razón por la que no aparece es porque no está inicializada en ninguna parte (ni en línea ni en el constructor). Suponiendo que desea mantenerlo como una propiedad opcional, todo lo que necesita hacer es inicializarlo con undefined :

 export class User { first_name: string = ''; last_name: string = ''; email: string = ''; constructor(data: User) { Object.assign(this, data); } } export class AdvancedUser extends User { advanced?: { foo?: string } = undefined; constructor(data: User) { super(data); } } const au = new AdvancedUser({} as User); /* OUTPUT: AdvancedUser: { "first_name": "", "last_name": "", "email": "", "advanced": undefined } */ console.log(au);
about 4 years ago · Juan Pablo Isaza Relatório

0

¿Qué tal algo como esto para usar Partial?:

 interface IUserData { first_name: string; last_name: string; email: string; } interface IAdvancedUserData { doAdvancedStuff(IAdvancedStuffOptions) : string; } class AdvancedUserData implements IUserData, IAdvancedUserData { }

su Usuario aún acepta datos de tipo Parcial, luego pasa un AdvancedUserData a su constructor AdvancedUser.

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