在Typescript中重载泛型箭头函数的语法错误 接口Foo1{ (参数:编号):编号 (参数:字符串):字符串 } 常量foo1:foo1=(参数:number | string)=>param as any 常量foo2=(参数:T):T=>param 接口Foo3{ (参数:T1):T1 (参数:T2):T2 } 常量foo3:foo3=(参数:T1 | T2)=>param as any //[ts]找不到名称“T1”。[2304] //[ts]找不到名称“T2”。[2304]

在Typescript中重载泛型箭头函数的语法错误 接口Foo1{ (参数:编号):编号 (参数:字符串):字符串 } 常量foo1:foo1=(参数:number | string)=>param as any 常量foo2=(参数:T):T=>param 接口Foo3{ (参数:T1):T1 (参数:T2):T2 } 常量foo3:foo3=(参数:T1 | T2)=>param as any //[ts]找不到名称“T1”。[2304] //[ts]找不到名称“T2”。[2304],typescript,generics,arrow-functions,Typescript,Generics,Arrow Functions,我搜索了StackOverflow,但问题只涉及其中一个,或者没有回答问题。您没有重载函数;您正在声明一个函数。您需要提供泛型类型参数(T1和T2)。你想具体做什么?@ExplosionPills我想根据参数类型返回不同的类型。你必须指出T1和T2是什么,但我认为你不需要两个泛型。看起来只有一个会很好,就像你为foo2@ExplosionPills准备的一样。第二个不会工作,因为我试图做的是param是固定类型,但返回值是泛型类型。接口Foo3是泛型接口,没有默认泛型类型。因此,当您尝试初始化f

我搜索了StackOverflow,但问题只涉及其中一个,或者没有回答问题。

您没有重载函数;您正在声明一个函数。您需要提供泛型类型参数(T1和T2)。你想具体做什么?@ExplosionPills我想根据参数类型返回不同的类型。你必须指出
T1
T2
是什么,但我认为你不需要两个泛型。看起来只有一个会很好,就像你为
foo2
@ExplosionPills准备的一样。第二个不会工作,因为我试图做的是
param
是固定类型,但返回值是泛型类型。接口Foo3是泛型接口,没有默认泛型类型。因此,当您尝试初始化foo3时,必须设置这些泛型类型。无法创建常量foo3:foo3。。。这里您必须说明这些通用值是什么
interface Foo1 {
  (param: number): number
  (param: string): string
}

const foo1: Foo1 = (param: number | string) => param as any
const foo2 = <T>(param: T) : T => param 

interface Foo3<T1, T2> {
  (param: T1): T1
  (param: T2): T2
}

const foo3: Foo3<T1, T2> = <T1, T2>(param: T1 | T2) => param as any
// [ts] Cannot find name 'T1'. [2304]
// [ts] Cannot find name 'T2'. [2304]