我从其他文件导入数据,但在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;
我收到错误;
财产&#39; id&#39;类型&#39;对象&#39;上不存在。
我已经广泛搜索了许多结果poppin但似乎无法将逻辑应用于我想要做的这个简单的事情。
答案 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);
}
}