Typescript:箭头函数的通用功能类型界面。

问题描述 投票:1回答:1

好吧,我有以下方案。

type IHashFn = (arg: string) => number;
const hash: IHashFn = (arg) => {
  return 42;
}

到目前为止,一切正常 现在我希望函数是通用的。

const hash: <T> (arg: T) => number = (arg) => {
  return 42;
}

这样就可以了。但是这个不行。

type IHashFn<T> = (arg: T) => number;
const hash: <T> IHashFn<T> = (arg) => {
  return 42;
}

我没有办法让TS编译器平静下来。使用接口代替类型别名也不行。

注意:我不想让 hash 落实到 IHashFn<string> 但也是通用的。

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

typescript generics types arrow-functions typescript-generics
1个回答
0
投票

你并没有真正使用你的通用参数做任何事情。

但听起来你想要的是一个通用函数,而不是通用类型别名。所以把它留在函数上,而不要放在类型别名上。

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

const hash: IHashFn = (arg) => {
  return 42;
}

0
投票

你可以简单地使用 IHashFn<any>. 在以下情况下可以使用 IHashFn<string> 也是我们所期望的。

如果你真的希望它仍然是一个通用函数类型,你可以做这样的事情。

type IHashFn<T = any> = <U extends T>(arg: U) => number;
© www.soinside.com 2019 - 2024. All rights reserved.