簡體   English   中英

TypeScript、Promise 和接口

[英]TypeScript, Promise and Interface

我最近開始使用 TypeScript,但我被困在一個地方,找不到一個問題的解決方案。 你能回答嗎? 如何縮短代碼並擺脫空中間類 PaginatedUserDTO 的創建?

文件:分頁用戶.dto.ts

export class PaginatedUserDTO extends Paginated(UserDTO) {}

文件: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); 
}

我試着寫這樣的東西:

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

但它沒有用。

如果我理解正確, Paginated Paginated<T>(classRef: Type<T>)返回Type<IPaginatedType<T>> ,所以你可以嘗試類似

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

如果它不起作用,請評論我

謝謝! 是的,它有效。 但我仍然無法更改 Query() 裝飾器的參數。 它是@nestjs/graphql 的一部分,我會嘗試用谷歌搜索解決方案。

文件:user.resolve.ts

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

文件: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);
}

如果我寫以下內容,將出現錯誤:

文件:user.resolve.ts

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM