Я пытаюсь создать заглушку класса Sequelize Model, чтобы можно было выполнять внедрение зависимостей для модульного тестирования.Однако у меня возникают проблемы с поиском правильных параметров шаблона, чтобы он работал.
Пока у меня есть следующее:
class ModelStub extends Model {
public static findAll<M extends Model>(this: (new () => M) & typeof Model, options?: FindOptions): Bluebird<M[]> {
return super.findAll.call(this, options);
}
}
, которое выдает мне следующее сообщение об ошибке:
error TS2417: Class static side 'typeof ModelStub' incorrectly extends base class static side 'typeof Model'.
Types of property 'findAll' are incompatible.
Type '<M extends import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib/model").Model<any, any>>(this: (new () => M) & typeof import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib/model").Model, options?: import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib...' is not assignable to type '<M extends import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib/model").Model<any, any>>(this: (new () => M) & typeof import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib/model").Model, options?: import("C:/Users/CMalek/Desktop/Web-Server/node_modules/sequelize/types/lib...'. Two different types with this name exist, but they are unrelated.
Type 'Bluebird<Model<unknown, unknown>[]>' is not assignable to type 'Bluebird<M[]>'.
Types of property 'then' are incompatible.
Type '{ <U>(onFulfill?: (value: Model<unknown, unknown>[]) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Bluebird<U>; <TResult1 = Model<unknown, unknown>[], TResult2 = never>(onfulfilled?: (value: Model<unknown, unknown>[]) => Resolvable<TResult1>, onrejected?: (reason: any) => Resolvable<...>): Bluebird<.....' is not assignable to type '{ <U>(onFulfill?: (value: M[]) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Bluebird<U>; <TResult1 = M[], TResult2 = never>(onfulfilled?: (value: M[]) => Resolvable<TResult1>, onrejected?: (reason: any) => Resolvable<...>): Bluebird<...>; }'.
Types of parameters 'onFulfill' and 'onFulfill' are incompatible.
Types of parameters 'value' and 'value' are incompatible.
Type 'Model<unknown, unknown>[]' is not assignable to type 'M[]'.
Type 'Model<unknown, unknown>' is not assignable to type 'M'.
'Model<unknown, unknown>' is assignable to the constraint of type 'M', but 'M' could be instantiated with a different subtype of constraint 'Model<any, any>'.
Я новичок в Typescript, поэтому я не уверен, как создать мост между Model<unknown, unknown> and Model<any, any>
?
В худшем случае я, конечно, мог бы создать свой собственный класс для переносаВместо этого добавьте в кавычки и создайте заглушку, но я бы предпочел не добавлять дополнительный слой кода.
Любая помощь приветствуется.