在 TypeScript 中分离函数的通用类型定义?

Separating generic type definition of function in TypeScript?

例如,在Haskell中,对每个类型和函数都有相应的独立定义是定义函数的标准方式。

Haskell中id的定义是:

id :: forall a. a -> a
id = \a -> a

在 TypeScript 中,我们可以这样写

const id = <T>(a: T) => a;

但很多时候,我想以Haskell的方式进行类似的定义。

type id<T> = (a:T) => T 
const id:id<T> = a => a;

这会产生错误:找不到名称 'T'.ts(2304)

请注意:

我知道下面的代码有效,

type id<T> = (a: T) => T
const id: id<number> = a => a;

但我的问题是

const id = <T>(a: T) => a;

有没有合适的分离方式写法?

TypeScript 版本 4.5.5

type id = <T>(a: T) => T
const id: id = a => a;