好,我有以下情况:
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中声明泛型函数类型或接口?
答案 0 :(得分:1)
您实际上并没有使用通用参数做任何事情。
但这听起来像您想要一个泛型函数,而不是泛型类型别名。因此,将其保留在函数中,并保留类型别名。
type IHashFn = <T>(arg: T) => number;
const hash: IHashFn = (arg) => {
return 42;
}
答案 1 :(得分:0)
您可以简单地使用IHashFn<any>
。在预期IHashFn<string>
的地方也可以使用。
如果您确实希望它仍然是通用函数类型,则可以执行以下操作:
type IHashFn<T = any> = <U extends T>(arg: U) => number;