Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda