• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

585
Views
¿Tipo Mongoose Schema como una interfaz personalizada de TypeScript?

ingrese la descripción de la imagen aquí

Me gustaría almacenar un objeto personalizado que tenga los atributos de la interfaz StationRating, ¿alguien puede ayudarme?

about 3 years ago · Santiago Trujillo
1 answers
Answer question

0

Es posible, pero requiere algo de repetitivo. Los problemas son:

  • Las interfaces y los tipos en TS no existen en el código emitido

  • Si bien podría ir en la otra dirección: cree un objeto de esquema y haga una interfaz / tipo a partir de él, los valores del objeto de esquema deben ser constructores , por ejemplo, Number , que no es lo mismo que algo con un tipo de number .

Pero puede crear un tipo que asigne los tipos de constructores a sus tipos primitivos (por ejemplo, Number to number ), y luego usarlo para convertir el objeto de esquema en el tipo que desea:

 type ConstructorMapping<T> = T extends NumberConstructor ? number : T extends StringConstructor ? string : never; // etc: continue as needed const schemaObj = { score: Number, user_id: String, station_id: String, description: String, }; type SchemaObj = typeof schemaObj; type StationRating = { [prop in keyof SchemaObj]: ConstructorMapping<SchemaObj[prop]> };

Luego use schemaObj cuando llame a new Schema y también tendrá el siguiente tipo utilizable:

 type StationRating = { score: number; user_id: string; station_id: string; description: string; }

¿Vale la pena? No estoy seguro. Para objetos más pequeños, tal vez no. Para objetos más grandes, tal vez así. Es posible que prefiera simplemente escribir el tipo y el objeto de esquema.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error