打字稿:函数返回带有来自参数

时间:2021-02-26 08:24:40

标签: typescript typescript-generics

我需要将函数的结果定义为带有参数字段名称的对象。像这样:

function generate<R>(name: string, value: () => R): { [name]: R } {
    return {
        [name]: value()
    };
}
const s = generate('foo', () => 1);
assert(s.foo === 1);

有可能吗?

1 个答案:

答案 0 :(得分:3)

您可以借助重载来实现它:

function generate<T extends string, R>(name: T, value: () => R): Record<T, R>
function generate<T extends string, R>(name: T, value: () => R) {
  return {
    [name]: value()
  }
}
const s = generate('foo', () => 1); // ecord<"foo", number>

Playground link

相关问题