const foo = <T>(arg1: T): T => {
return arg1
}
export type Bar = {
foo: typeof foo
}
export const bar = <T>(): Bar => {
return { foo }
}
bar<number>()
我需要根据最后一条语句中的声明将通用 T
从 bar
传递到 foo
,这样 T
也将是参数类型作为 foo
的返回类型即; number
在这种情况下。我怎样才能做到这一点?
请注意 bar
和 Bar
是模块的导出成员。
答案 0 :(得分:0)
请注意,在写完这个答案后,问题已更改。
由于您的函数 bar
没有返回类型注释,因此使用声明的类型将其返回类型推断为 {foo<T>(arg1: T): T}
(其中 T
是自由变量) foo
。如果您想要较弱的类型 {foo(arg1: T): T}
,其中 T
绑定到 bar
的类型参数,那么您只需在返回类型注释中指定:
const bar = <T>(): {foo(x: T): T} => {
return { foo }
}