打字稿:具有单个键的对象

时间:2018-04-27 18:03:07

标签: typescript

考虑以下(部分类型)函数:

const fn = <T, ?? ...>(name: ??, value: T) => ({ [name]: value })

是否可以完成输入

fn("hello", someT)

会有类型

{ hello: T }

如果不是:是否有另一种方法可以得到类似的结果?

我正在考虑

的内容

<K extends string, T>(name: K, value: T): { [k: K]: T} => ...

但这不起作用。

1 个答案:

答案 0 :(得分:2)

使用type参数捕获键的文字类型,string的子类型,并使用它来定义映射类型

const fn = <T, N extends string>(name: N, value: T) => <{[P in N]: T}>({
  [name]: value
});

不幸的是,类型断言是必需的。

const hasPOfNumber = fn('p', 52);

console.log(hasPOfNumber.p);