Я разрабатываю GraphQL API с TypeGraphQL, и я почувствовал необходимость реализовать этот шаблон , чтобы исключить немного шаблонного кода в моей базе кода. Основываясь на этом примере, в итоге получается что-то вроде этого (пропущены нерелевантные биты):
export default function PaginatedResponse<TItem>(TItemClass: ClassType<TItem>) {
@ObjectType({ isAbstract: true })
abstract class PaginatedResponseClass {
// here we use the runtime argument
@Field(type => [TItemClass])
// and here the generic type
items: TItem[];
}
return PaginatedResponseClass;
}
И просто вам не нужно его искать, ClassType
- это экспортированный интерфейс TypeGraphQL, подобный этому:
export interface ClassType<T = any> {
new (...args: any[]): T;
}
Я не могу найти способ ссылаться на PaginaedResponseClass
как тип возвращаемого значения функции, потому что он объявлен после объявления функции, и я не могу переместить этот класс за пределы функции потому что это зависит от TItemClass
, который исходит от параметра функции.
Мой вопрос: Что за явный тип возврата PaginatedResponse
? Можно ли даже объявить это?