[英]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.