如何在函数中使用自定义键创建对象类型?

时间:2019-10-28 00:34:25

标签: typescript

我想创建一个接受键和值的函数,并使用该数据返回一个新对象。例如:

createObject('name', 'Foo'); // { name: "Foo" }

我还想使该函数类型安全,这意味着它应该返回带有键及其值类型的类型。例如:

type ReturnedType = { name: string };

我尝试这样做,但是出现错误:

type Obj<K extends string, V> = {
  [key in K]: V
};

function createObject<K extends string, V>(key: K, value: V): Obj<K, V> {
  // Type '{ [x: string]: V; }' is not assignable to type 'Obj<K, V>'.
  return {
    [key]: value
  }
}

const person = createObject('data', {
  name: 'Foo',
  age: 10
});

console.log(person.data.name);

Playground link.

0 个答案:

没有答案