繁体   English   中英

如何使用 Typescript 制作带有字符串索引的复杂接口?

[英]How can I make a complex interface with string indexes with Typescript?

我如何制作一个独特但允许我索引它的值的界面:

export const convertKeyNames = (Doc: MyDoc) => {
  return Object.keys(Doc).reduce((doc, key) => {

    return {
      [key[0].toLowerCase() + key.slice(1)]: Doc[key],
    };

  }, {});
};

对于这句话,我收到了一个打字稿错误:

“字符串”类型的表达式不能用于索引“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<string> ,而不是Array<keyof param> 最简单的替代方法是使用Object.entries来一次提取键和值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM