Recientemente comencé a usar TypeScript, pero estoy atascado en un lugar y no puedo encontrar una solución a un problema. ¿Puedes responder? ¿Cómo acortar el código y deshacerse de la creación de una clase intermedia vacía PaginatedUserDTO?
archivo: paginated-user.dto.ts
export class PaginatedUserDTO extends Paginated(UserDTO) {}archivo: usuario.servicio.ts
async find(filter?: findArgs): Promise<PaginatedUserDTO> { const { first, after, last, before, find } = filter; const query = this.User.find(find); return paginate(query, filter); }Intenté escribir algo como:
async find(filter?: findArgs): Promise<Type extends Paginated(BusStopDTO)> { ... }Pero no funcionó.
Si entendí correctamente, Paginated<T>(classRef: Type<T>) devuelve Type<IPaginatedType<T>> , por lo que puede intentar algo como
async find(filter?: findArgs): Promise<Type<IPaginatedType<BusStopDTO>>> { ... }comentame si no te funciono
¡Gracias! Si, funciona. Pero todavía no puedo cambiar el parámetro del decorador Query(). Es parte de @nestjs/graphql, intentaré buscar una solución en Google.
archivo: usuario.resolve.ts
@Query(() => PaginatedUserDTO) async find(@Args() filter?: findArgs) : Promise<IPaginatedType<UserDTO>> { return this.userService.find(filter); }archivo: usuario.servicio.ts
async find(filter?: findArgs): Promise<IPaginatedType<UserDTO>> { const { first, after, last, before, find } = filter; const query = this.userModel.find(find); return paginate(query, filter); }Si escribo lo siguiente, me aparecerá un error:
archivo: usuario.resolve.ts
@Query(() => IPaginatedType<UserDTO>) async find(@Args() filter?: findArgs) : Promise<IPaginatedType<UserDTO>> { return this.userService.find(filter); }