Модуль экспорта и импорта универсальных типов в TypeScript?

#typescript

Вопрос:

Обычно я пишу модуль JavaScript/машинописи следующим образом:

 const obj = (() => {

  const F = <A>(x: A) => x;
  const G = "bar";

  type F<A> = A; // can be more complicated than F definition

  return { F };

})();

const F = obj.F;

export { F }
 

Таким образом, становится ясно, какие объекты должны быть экспортированы; однако проблема в том, что вы не можете ссылаться на F<A> здесь.

Единственный способ, который я знаю и в настоящее время делаю, — это переместить его на верхний уровень модуля:

 const obj = (() => {

  const F = <A>(x: A) => x;
  const G = "bar";

  return { F };

})();

type F<A> = A; // can be more complicated than F definition

const F = obj.F;

export { F }
 

Мне неудобно это делать, есть ли какой-нибудь разумный способ? Спасибо!