React TypeScript如何遍历一个对象?

时间:2020-04-19 17:55:04

标签: javascript reactjs typescript

这是特定于React的。

我有一个这样的对象:

interface Profile {
    name: string;
    title: string;
}

const NewPerson: Profile = {
    name: "John Smith",
    title: "Software Engineer"
}

我想像这样在React组件中返回该对象的键-值对:

function MyFunc() {
  return (
   <div>
    {
      Object.keys(NewPerson).map((key) => (
        <div>{key}: {NewPerson[key]}</div>
      ))
     }
    </div>
  )
}

但是,我可以访问它们key,但不能访问其值。我有这个错误:

TS:元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型“ Profile”。 在“配置文件”类型上找不到带有“字符串”类型参数的索引签名。

我尝试使用Object.valuesfilter,但无法修复。

2 个答案:

答案 0 :(得分:2)

尝试

interface Profile {
    name: string;
    title: string;
    [key: string]: string;
}
const NewPerson: Profile = {
    name: "John Smith",
    title: "Software Engineer"
}
function MyFunc() {
  return (
   <div>
    {
      Object.keys(NewPerson).map((key: keyof Profile) => (
        <div>{key}: {NewPerson[key]}</div>
      ))
     }
    </div>
  )
}

答案 1 :(得分:1)

将Object.entries与forEach循环结合使用该怎么办?

Object.entries(NewPerson).forEach(([key, value]) => {
   <div>{key}: {value}</div>
})