我想创建一个接受键和值的函数,并使用该数据返回一个新对象。例如:
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);