首页 > 解决方案 > Typescript - 使用通用键扩展对象

问题描述

我想要一种方法,它接受一个对象并向它添加一个属性,例如这个:

const augment = <T extends {}, K extends string>(obj: T, key: K): T & { [x in K]: string } => {
    return { ...obj, [key]: "someString" };
};

这失败了

Type 'T & { [x: string]: string; }' is not assignable to type 'T & { [x in K]: string; }'.

我知道那key是不保留的keyof K方面。在一个理想的世界里,如果我打电话

const anObj = { aProp: 'aVal' };
const anotherObj = augment( anObj, "aKey" );

我想要anotherObjto be的签名{ aProp: 'aVal', aKey: string }。特别是当关键参数是文字时。有什么建议吗?

标签: typescript

解决方案


推荐阅读