Я пытаюсь создать базовую службу crud, которая использует модель Sequelize и создает для нее все основные API-интерфейсы, так что я сделал это:
export class RepositoryService<T extends Model<T>> {
constructor(protected model: typeof Model) {
}
public async getMany(
query: RequestParamsParsed = {},
options: RestfulOptions = {},
): Promise<T[]> {
return this.model.findAll();
}
}
Я получаю следующую ошибку:
The 'this' context of type 'typeof Model' is not assignable to method's 'this' of type 'new () => Model<Model<any>>'.
Cannot assign an abstract constructor type to a non-abstract constructor type.
это из-за этой строки в пакете seqeulize-typescript
:
static findAll<T extends Model<T>>(this: (new () => T), options?: IFindOptions<T>): Promise<T[]>;
Я относительно новичок в Typescript
, поэтому, если кто-нибудь может сказать мне, что означает this: (new () => T)
в функции findAll
и как я могу это решить.
arg: (new () => T)
означает, что arg не является экземпляром типаT
, как в(arg: T)
. arg - это класс T. Также вы можете использовать этот синтаксис для этого(arg: { new (...args): T })
- person Przemyslaw Jan Beigert   schedule 14.03.2019