Typescript:箭头函数的通用函数类型/接口

akr*_*nah 5 generics types typescript arrow-functions typescript-generics

好的,我有以下场景:

type IHashFn = (arg: string) => number;
const hash: IHashFn = (arg) => {
  return 42;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。现在我希望该函数是通用的。

const hash: <T> (arg: T) => number = (arg) => {
  return 42;
}
Run Code Online (Sandbox Code Playgroud)

这样可行。但这并没有:

type IHashFn<T> = (arg: T) => number;
const hash: <T> IHashFn<T> = (arg) => {
  return 42;
}
Run Code Online (Sandbox Code Playgroud)

我发现没有办法让 TS 编译器平静下来。使用接口而不是类型别名也不起作用。

注意:我不想成为通用hash的实现。IHashFn<string>

有没有办法在 TypeScript 中声明泛型函数类型或接口?

Ale*_*yne 4

您实际上并没有对通用参数做任何事情。

但听起来您想要一个泛型函数,而不是泛型类型别名。因此,将其保留在函数中,而不是类型别名中。

type IHashFn = <T>(arg: T) => number;

const hash: IHashFn = (arg) => {
  return 42;
}
Run Code Online (Sandbox Code Playgroud)