如何在打字稿中为未绑定的通用lambda创建类型别名?

时间:2018-09-20 09:18:30

标签: typescript generics lambda types

我想简化以下结构:

const lambda: <T>(source: Thing<T>) => Other<T> = <T>(source: Thing<T>) => ...

通过引入类型别名:

type Lambda<T> = (source: Thing<T>) => Other<T>;
const lambda: Lambda<T> = <T>(source: Thing<T>) => ...

执行此操作时,在lambda的声明中出现以下错误:     找不到名称“ T”

指定lambda类型的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

之所以不起作用,是因为Lambda是一种泛型类型,是一种非泛型函数(一旦您为Lambda指定了该类型,并且该函数的类型设置为固定值。原始函数另一方面是通用函数,调用时可以接受任何类型的参数。

要为通用函数定义类型别名,语法为

type Lambda = <T>(source: Thing<T>) => Other<T>;
const lambda: Lambda = <T>(source: Thing<T>) => ...