У меня есть IModelDefinition
, например:
export interface IModelDefinition<MT extends Typegoose, QT> {
model: new () => MT;
}
QT не используется непосредственно в самом интерфейсе, но он передается в качестве помощника другим функциям, например, так, чтобы Typescript мог вывестиQT автоматически:
public async getSingleMatch<MT extends Typegoose, QT>(
definition: ModelDefinition<MT, QT>,
doc: QT
): Promise<MT> ...
И я вызываю функцию так:
// Account is a ModelDefinition<AccountClass, {identifier: string} and
// if I remove the identifier string, it gives an error as I expect it to.
const account = await getSingleMatch(Account, {
identifier: params.identifier,
});
Все правильно, пока не получу результат.Результатом является тип Typegoose
, но вместо этого он должен иметь тип AccountClass
.Как я могу решить это?Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: для устранения недоразумений;Я могу передавать типы, но единственная причина, по которой я это делаю, состоит в том, чтобы не передавать типы и делать их автоматически.Разве нет пути?