如何创建一个独特的接口,但允许我索引它的值:
export const convertKeyNames = (Doc: MyDoc) => {
return Object.keys(Doc).reduce((doc, key) => {
return {
[key[0].toLowerCase() + key.slice(1)]: Doc[key],
};
}, {});
};
我得到了一个打字脚本错误:
类型“string”的表达式不能用于索引类型“mydoc”
我不想将mydoc
转换为带有字符串索引的对象的泛型接口,因为它正在链的更上游使用。
我想保留mydoc
界面。
顺便说一句,这对我来说毫无意义。为什么我不能使用对象自己的键来索引它呢?
听起来您只是试图转换输入对象的键。请考虑通过映射对象的条目来创建新对象:
export const convertKeyNames = (Doc: MyDoc) => (
Object.fromEntries(
Object.entries(Doc).map(
([key, val]) => [key[0].toLowerCase() + key.slice(1), val]
)
)
);
为什么我不能使用对象自己的键来索引它呢?
由于某种奇怪的原因,object.keys
返回array
,而不是array
。最简单的替代方法是使用object.entries
来同时提取键和值。