【发布时间】:2019-10-29 21:21:13
【问题描述】:
我有一个这样的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 类型。
我该如何解决这个问题?感谢您的帮助。
编辑:解决误解;我可以传递类型,但我构建它的全部原因是不传递类型并使其自动推断。没有办法吗?
【问题讨论】:
-
您没有在泛型函数中传递类型,您只是将参数传递给函数。
-
我可以传递类型,但我构建它的全部原因是不传递类型并使其自动推断。没有办法吗?
标签: javascript typescript generics interface nested