[英]TS2739 Type 'any[]' is missing the following properties from type 'JSON': parse, stringify, [Symbol.toStringTag]
In my react-typescript project I am running into a typing error when I try to pass a JSON
as a prop.在我的 react-typescript 项目中,当我尝试将JSON
作为道具传递时遇到了打字错误。
class MainNewsFeed extends React.Component {
constructor(props: any) {
super(props);
}
render() {
const bitcoinJson = [...require("./feeds/newsJson.json")];
return (
<NewsFeedCol json={newsJson}/>
);
}
}
class NewsFeedCol extends React.Component<{ newsJson:JSON }, {}> {
constructor(props: any) {
super(props);
let JsonData = [...props.json]
}
render() {
return (
<Row>
<Col sm={12} md={6} lg={4}>
<NewsFeedItem index={1}/>
</Col>
</Row>
);
}
}
/Users/simon/Code/web/thedrewreport/frontend/thedrewreport/src/MainNewsFeed.tsx
TypeScript error in /Users/simon/Code/web/thedrewreport/frontend/thedrewreport/src/MainNewsFeed.tsx(18,26):
Type 'any[]' is missing the following properties from type 'JSON': parse, stringify, [Symbol.toStringTag] TS2739
17 | return (
> 18 | <NewsFeedCol json={bitcoinJson}/>
| ^
19 | );
20 | }
21 | }
How do you properly handle typing here?你如何正确处理在这里打字?
It seems like you want to annotate the newsJson
to be of type object.似乎您想将newsJson
注释为newsJson
类型。 However, JSON
a module (which has JSON.parse and JSON.stringify), not a type .但是, JSON
是一个模块(具有 JSON.parse 和 JSON.stringify),而不是 type 。 To annotate newsJson
attribute, you will need to know the exact shape of the object that you want, probably make it into an interface
.要注释newsJson
属性,您需要知道您想要的对象的确切形状,可能将其制作成interface
。 For example例如
interface NewsFeedsColProp {
newsJson: {
name: string;
provider: string;
id: number;
}
}
class NewsFeedCol extends React.Component<NewsFeedsColProp , {}>
Note the fields name
, provider
, and id
- I am expecting the newsJson
to be an object with these 3 fields.请注意字段name
、 provider
和id
- 我希望newsJson
是具有这 3 个字段的对象。
The name
, provider
, and id
fields are just made-up things of mine; name
、 provider
和id
字段只是我自己编造的; you need to determine the exact shape of the data that your newsJson
prop is going to get.您需要确定newsJson
道具将获得的数据的确切形状。
If you can't know the exact shape, you can type newsJson
as any
type, or "unknown-object" type: {[key: string]: any}
- which is not really a good practice如果您不知道确切的形状,您可以将newsJson
为any
类型,或“未知对象”类型: {[key: string]: any}
- 这不是一个很好的做法
interface NewsFeedsColProp {
newsJson: {
[key: string]: any,
}
}
// Or
interface NewsFeedsColProp {
newsJson: any
}
class NewsFeedCol extends React.Component<NewsFeedsColProp , {}>
Hope I am making sense希望我说的有道理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.