TypeScript 泛型 : infer key of key-value return type from function argument

标签 typescript generics typescript-generics

我必须执行以下功能:

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;
}

这有可能吗?

最佳答案

在 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')

关于TypeScript 泛型 : infer key of key-value return type from function argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601151/

相关文章:

c# - 使协变接口(interface)向后兼容

typescript 返回分配函数的推断类型,但限制返回类型以扩展预定义类型

TypeScript 联合作为函数参数

java - 取决于类型、泛型、继承或两者的实例化?

Java Generic和Generic Class的继承

javascript - Angular 4显示其他组件单击时的弹出窗口

angular - forkjoin 在 Angular 10 替代方案中已弃用

typescript - Typescript 中命名元组的通用名称是什么?

angular - 如何在 Angular 2 中绑定(bind) HTML 中组件的静态变量?

angular - 使用一种方法将多个变量设置为 false Angular4