Обобщение Typescript выводит тип экземпляра из типа класса

У меня есть универсальная функция-обертка, которая принимает класс, а затем необходимо определить тип экземпляра для возвращаемого типа - но у меня возникают проблемы с тем, чтобы заставить это работать... Для некоторого дополнительного контекста это для запросов к базе данных с использованием Objection,

Классы:

Обратите внимание, что Model класс поступает из библиотеки возражений.

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 ответов

Другие вопросы по тегам