好的,我有以下场景:
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中声明泛型函数类型或接口?
发布于 2020-04-23 06:56:10
您实际上并没有对泛型参数做任何事情。
但是听起来你想要一个泛型函数,而不是一个泛型别名。所以把它留在函数上,而不是类型别名。
type IHashFn = <T>(arg: T) => number;
const hash: IHashFn = (arg) => {
return 42;
}发布于 2020-04-23 07:07:21
您可以简单地使用IHashFn<any>。在需要IHashFn<string>的地方,这也是有用的。
如果你真的希望它仍然是一个泛型函数类型,你可以这样做:
type IHashFn<T = any> = <U extends T>(arg: U) => number;https://stackoverflow.com/questions/61376309
复制相似问题