代码之家  ›  专栏  ›  技术社区  ›  Benjamin M

TypeScript泛型:从函数参数推断键值返回类型的键

  •  3
  • Benjamin M  · 技术社区  · 6 年前

    我必须履行以下职能:

    function x<V = string, K extends string = string>(myKey: K): {[k in K]: V} {
      return null as any;
    }
    

    我想去掉 K extends string = string 部分。

    现在我不得不这样称呼它:

    const res = x<number, 'foo'>('foo');   // resulting type: { foo: number }
    

    但我不想打字 foo 两次。我只想这样使用它:

    const res = x<number>('foo');
    

    虽然理想情况下,我希望键入这样的函数:

    function x<V = string>(myKey: string): {[myKey]: V} {
      return null as any;
    }
    

    这有可能吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Titian Cernicova-Dragomir    6 年前

    在3.1中可以推断一些类型参数 Named type arguments & partial type argument inference .

    在此之前,您可以让函数返回另一个函数,第一个调用指定第一个类型参数,第二个调用推断其余的

    function x<V = string>() {
        return function <K extends string = string>(myKey: K): { [k in K]: V } {
            return null as any;
        }
    }
    
    x<string>()('foo')