首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Typescript:箭头函数的泛型函数类型/接口

Typescript:箭头函数的泛型函数类型/接口
EN

Stack Overflow用户
提问于 2020-04-23 06:42:54
回答 2查看 1.2K关注 0票数 4

好的,我有以下场景:

代码语言:javascript
复制
type IHashFn = (arg: string) => number;
const hash: IHashFn = (arg) => {
  return 42;
}

到现在为止还好。现在我希望这个函数是泛型的。

代码语言:javascript
复制
const hash: <T> (arg: T) => number = (arg) => {
  return 42;
}

这是可行的。但这不是:

代码语言:javascript
复制
type IHashFn<T> = (arg: T) => number;
const hash: <T> IHashFn<T> = (arg) => {
  return 42;
}

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

注意:我不希望hash成为IHashFn<string>的实现,但也希望它是通用的。

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

EN

回答 2

Stack Overflow用户

发布于 2020-04-23 06:56:10

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

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

代码语言:javascript
复制
type IHashFn = <T>(arg: T) => number;

const hash: IHashFn = (arg) => {
  return 42;
}
票数 2
EN

Stack Overflow用户

发布于 2020-04-23 07:07:21

您可以简单地使用IHashFn<any>。在需要IHashFn<string>的地方,这也是有用的。

如果你真的希望它仍然是一个泛型函数类型,你可以这样做:

代码语言:javascript
复制
type IHashFn<T = any> = <U extends T>(arg: U) => number;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61376309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档