我想简化以下结构:
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类型的正确方法是什么?
答案 0 :(得分:1)
之所以不起作用,是因为Lambda
是一种泛型类型,是一种非泛型函数(一旦您为Lambda
指定了该类型,并且该函数的类型设置为固定值。原始函数另一方面是通用函数,调用时可以接受任何类型的参数。
要为通用函数定义类型别名,语法为
type Lambda = <T>(source: Thing<T>) => Other<T>;
const lambda: Lambda = <T>(source: Thing<T>) => ...