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

156
Vistas
Texto mecanografiado: cómo pasar variable con tipo complejo a una función sin redefinir el tipo

Soy un poco nuevo en mecanografiado y tuve esto varias veces. Uso, por ejemplo, prisma (o cualquier cosa) para obtener un valor cuyo tipo es monstruosamente complejo (como en long).

Tiene muchos atributos y esos están perfectamente bien. Tan pronto como quiero definir una función para manejar este valor, pierdo toda la información de tipo ya que tendría que redefinir este tipo complejo en el parámetro.

Ejemplo:

 const users = await prisma.user.findMany({ select:{ projects: { select: { name: true, slug: true, _count:{ select: { subscribers: true, mediaIds: true } } }, }, id: true, email: true, firstName: true, lastName: true, createdAt: true, _count:{ select:{ mediaIds: true, projects: true } } }, });

Y ahora quiero definir una función para, por ejemplo, manejar uno solo de esos suscriptores:

 users.forEach(user=>{ // here I have perfect typing for the user object handleUser(user) }); function handleUser(user: <what to put here?>){ // here I'd have to retype / redefine the monstreously long (but helpful) dynamic type that prisma creates for my query }

Estoy confundido sobre cuál es el enfoque común aquí.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Si la matriz de users está disponible en el ámbito de la función, puede usar el operador typeof .

 function handleUser(user: typeof users[number]){ }

Puede indexar el tipo de typeof users con el number para obtener el tipo de un elemento de matriz dentro de users .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar la clase que define el modelo User . Usted define el modelo una vez en el archivo orm y luego puede usar el tipo de User para escribir sus parámetros. Typescript no puede saber que el usuario param es un usuario, por lo que debe escribirlo

 function handleUser(user: User){ // handle the user }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para definir un tipo grande en TypeScript, use la interface para objetos o type para detalles pequeños.

Ejemplo:

 interface HumanType { name: string; age: number; } const human: HumanType = { name: "Thomas", age: 34588 }

En este ejemplo, si tiene una clase que define a Human, utilícela como tipo.

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