如何在Typescript中为箭头函数创建泛型类型

时间:2017-01-26 14:09:57

标签: generics typescript typescript-typings

我尝试以最接近功能的样式编写typescript函数。对于简单的函数,我可以写:

type A = (value: number) => string;
const a: A = value => value.toString();

但是我可以用泛型类型做什么?如何以简单的方式输入函数?

function a<T>(value: T): T {
  return value;
}

如果我尝试简单地添加泛型类型,它什么都不提供:

type A = <T>(value: T) => T;
const a: A = value => value; // `value` implicitly has an `any` type

有什么办法吗?

1 个答案:

答案 0 :(得分:3)

在你的最后一个片段中:

type A = <T>(value: T) => T;
const a: A = value => value;

您告诉编译器a类型为A,但您不能将其绑定到特定的泛型类型,这就是它使用any的原因。

例如,您可以像这样设置泛型类型:

const a: A = (value: string) => value;

你也可以这样做:

type A<T> = (value: T) => T;
const a: A<string> = value => value;

如果您希望a具体。

如果您希望a保持通用,您还需要在其上声明通用约束:

const a: A = <T>(value: T) => value;