如何将泛型类型传递给子函数?

时间:2021-06-23 11:44:08

标签: typescript typescript-generics

const foo = <T>(arg1: T): T => {
  return arg1
}

export type Bar = {
  foo: typeof foo
}

export const bar = <T>(): Bar => {
  return { foo }
}

bar<number>()

我需要根据最后一条语句中的声明将通用 Tbar 传递到 foo,这样 T 也将是参数类型作为 foo 的返回类型即; number 在这种情况下。我怎样才能做到这一点?

请注意 bar Bar 是模块的导出成员。

1 个答案:

答案 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 }
}

Playground Link