Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

398
Visualizações
TypeScript, Promise and Interface

I recently started using TypeScript, but I'm stuck in one place and can't find a solution to one problem. Can you answer? How to shorten the code and get rid of the creation of an empty intermediate class PaginatedUserDTO ?

file: paginated-user.dto.ts

export class PaginatedUserDTO extends Paginated(UserDTO) {}

file: user.service.ts

async find(filter?: findArgs): Promise<PaginatedUserDTO> {
    const { first, after, last, before, find } = filter;
    const query = this.User.find(find);
    
    return paginate(query, filter); 
}

I tried writing something like:

async find(filter?: findArgs): Promise<Type extends Paginated(BusStopDTO)> {
    ...
}

But it didn't work.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

If I understood correctry, Paginated<T>(classRef: Type<T>) returns Type<IPaginatedType<T>>, so you may try something like

async find(filter?: findArgs): Promise<Type<IPaginatedType<BusStopDTO>>> {
    ...
}

Comment me if it didn't work

about 4 years ago · Juan Pablo Isaza Relatório

0

Thank you! Yes, it works. But I'm still unable to change the parameter of the Query() decorator. It's part of @nestjs/graphql, I'll try to google it for a solution.

file: user.resolve.ts

@Query(() => PaginatedUserDTO)
async find(@Args() filter?: findArgs) : Promise<IPaginatedType<UserDTO>> {
    return this.userService.find(filter);
}

file: user.service.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);
}

If I write the following, an error will appear:

file: user.resolve.ts

@Query(() => IPaginatedType<UserDTO>)
async find(@Args() filter?: findArgs) : Promise<IPaginatedType<UserDTO>> {
    return this.userService.find(filter);
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda