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

154
Visualizações
Cómo buscar un elemento en DB cuando el tipo es String | String [] usando tipos de unión mecanografiados

Estoy llamando a un método sendEmail que envía un correo electrónico a un solo usuario o a un grupo de usuarios (el tipo de correo electrónico es string | string[] )

¿Hay una forma más limpia/mejor de determinar si se trata de una matriz o de un solo usuario para que pueda buscarlo en la base de datos en consecuencia? El código parece bastante repetitivo ahora.

 public async sendEmail( toEmail: string | string[], ): Promise<void> { if (!Array.isArray(toEmail)) { const user = await this.userRepository.getUserByEmail(toEmail); await checkIfPaymentMade(user); } else { for (const email of toEmail) { const user = await this.userRepository.getUserByEmail(toEmail); await checkIfPaymentMade(user); } } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Algunas otras opciones vienen a la mente

  1. Extraiga el código común a su propia función. Todavía hay algo de duplicación, pero solo una línea en lugar de la longitud que debe tener la función auxiliar.
 public async sendEmail( toEmail: string | string[] ): Promise<void> { if (!Array.isArray(toEmail)) { await doStuff(toEmail); } else { for (const email of toEmail) { await doStuff(email); } } } private async doStuff(toEmail: string): Promise<void> { const user = await this.userRepository.getUserByEmail(toEmail); await checkIfPaymentMade(user); }
  1. Haga que el cuerpo de la función solo funcione con cadenas independientes. Si es una matriz, recurse.
 public async sendEmail( toEmail: string | string[], ): Promise<void> { if (Array.isArray(toEmail) { for (const email of toEmail) { await sendEmail(email) } } else { const user = await this.userRepository.getUserByEmail(email); await checkIfPaymentMade(user); } }
  1. Haga que el cuerpo de la función solo funcione con matrices. Si no es una matriz, primero conviértala en una.
 public async sendEmail( toEmail: string | string[], ): Promise<void> { const emailArray = Array.isArray(toEmail) ? toEmail : [toEmail]; for (const email of emailArray) { const user = await this.userRepository.getUserByEmail(email); await checkIfPaymentMade(user); } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Si solo quieres mantenerlo SECO, aquí tienes una opción:

Enlace de juegos TS

 public async sendEmail (recipients: string | string[]): Promise<void> { for (const address of Array.isArray(recipients) ? recipients : [recipients]) { const user = await this.userRepository.getUserByEmail(address); await checkIfPaymentMade(user); } }
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