Typescript泛型从类类型推断实例类型

时间:2017-12-20 06:50:54

标签: typescript class generics instance

我有一个通用的包装函数,它接受一个类,然后需要推断返回类型的实例类型 - 但我无法让它工作...对于一些额外的上下文,这是用于数据库使用Objection查询。

类:

请注意,Model类来自Objection库。

class Model {
  static query<T>(this: Constructor<T>): QueryBuilder<T>;
}

class Person extends Model {
  name: string;
}

打包机:

function findById<T extends Model>(
  model: { query(): QueryBuilder<T> }
) {
  return (id: string) => model.query().findById(id);
}

人员实施:

import Person from 'models/person';

const findById = Wrapper.findById(Person);

我希望实现的返回类型可以推断为Promise<Person | undefined>,但是它推断为Promise<any>

即使在包装函数中添加一些额外的输入(尝试避免可能存在的任何异议级别输入问题):

function findById<T extends Base>(
  model: { query(): QueryBuilder<T> }
) {
  return (id: string): Promise<T | undefined> => model.query().findById(id);
}

该实现仍然指出返回类型为Promise<any>

我做错了吗?有没有办法实现我在这里的目标?

0 个答案:

没有答案