首页 > 解决方案 > 在 Typescript 上创建具有两个泛型类型的对

问题描述

在下面的一段代码中

type Pair<A,B> = { fst: A, snd: B }

function pair<A,B>(a:A) {

  return function (b:B):Pair<A,B> {

    return {
      fst: a,
      snd: b
    }

  }

}

const z = pair(2)("aaa")

的类型zPair<number,unknown>。有没有办法让 TypeScript 推断Bin的类型z?这是上面那块的游乐场链接

标签: typescripttypescript-generics

解决方案


函数类型参数应该在推断它们的函数上。移动B到内部函数,它按预期工作

type Pair<A,B> = { fst: A, snd: B }

function pair<A>(a:A) {

  return function <B>(b:B):Pair<A,B> {

    return {
      fst: a,
      snd: b
    }

  }

}

 const z = pair(2)("aaa")

游乐场链接


推荐阅读