Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!