React / Typescript:Property' id'类型'对象'上不存在

时间:2018-02-21 23:36:19

标签: javascript reactjs typescript

我从其他文件导入数据,但在render()我似乎无法获取json id中实体的属性,例如data。在调试时,当我将鼠标悬停在它上面时,我实际上可以看到id例如233765但是由于某种原因,typescript会在代码下面给出错误。我的定义中的错误在哪里?



import * as React from 'react';
import * as data from '../../team.json';

interface Props {
  //props
}

interface State {
   nextRacers: Array<object>;
   jockeys: Array<object>;
}

export class Race extends React.Component<Props, State> {

  constructor(props: Props) {
      super(props);
      this.state = {
          jockeys: data as object as <ArrayObject>, 
          nextRacers: [],
      };
  }

  render() {
      const r = this.state.jockeys;
      const x = r.map((value, i) => {
          console.log(value.id);
      });
      console.log(x);
  }
      
}
&#13;
&#13;
&#13;

我收到错误;

  

财产&#39; id&#39;类型&#39;对象&#39;上不存在。

我已经广泛搜索了许多结果poppin但似乎无法将逻辑应用于我想要做的这个简单的事情。

2 个答案:

答案 0 :(得分:0)

  

'object'类型中不存在属性'id'。

您有jockeys: Array<object>;更改为jockeys: Array<{id: any}>;或类似的适当注释。

答案 1 :(得分:0)

Typescript推断value属于object类型,没有属性id。骑师(as object as)的方式似乎也不正确。您应该创建一个Jockey界面来表示赛马会数据结构,并使用该类型定义而不是object

import * as React from 'react';
import * as data from '../../team.json';

interface Jockey {
    id: string;
}

interface Props {
    //props
}

interface State {
    nextRacers: any[];
    jockeys: Jockey[];
}

export class Race extends React.Component<Props, State> {

    state: State;

    constructor(props: Props) {
        super(props);
        this.state = {
            jockeys: data as Jockey[],
            nextRacers: []
        };
    }

    render() {
        const r = this.state.jockeys;
        const x = r.map((value: Jockey, i: number) => {
            console.log(value.id);
        });
        console.log(x);
    }

}