我正在将我的 React 应用程序重构为 Typescript,到目前为止一切顺利。我正在使用我的最后一个组件,即获取 API 数据的组件,我试图理解为什么这些类型错误没有得到解决。我用了https://jvilk.com/MakeTypes/帮助正确构建接口(interface)。
Object is possibly 'null'
两次 error
& stories
(下面的注释行)
参数 '___' 隐式具有 'any' 类型。
story
和 idx
两次(下面的注释行)
我在使用此 API 调用组件时遇到问题。我错过了什么?
import React, { FC, ReactElement, useEffect, useState } from "react";
import Story from "./Story";
export interface NewsProps {
results?: (ResultsEntity)[] | null;
}
export interface ResultsEntity {
section: string;
title: string;
abstract: string;
url: string;
multimedia?: (MultimediaEntity)[] | null;
}
export interface MultimediaEntity {
url: string;
caption: string;
}
const News: FC<NewsProps> = ({results:ResultsEntity}):ReactElement => {
const [error, setError] = useState(null);
const [stories, setStory] = useState(null);
useEffect(() => {
const getCurrentPage = () => {
const url = new URL(window.location.href);
const page = url.pathname.split("/").pop();
return page ? page : "home";
};
const section = getCurrentPage();
fetch(
`https://api.nytimes.com/svc/topstories/v2/${section}.json?api-key=4fzCTy6buRI5xtOkZzqo4FfEkzUVAJdr`
)
.then((res) => res.json())
.then((data) => {
setTimeout(() => setStory(data), 1500);
})
.catch((error) => {
console.log("Error", error);
setError(error);
});
}, []);
if (error) {
return <div>Error: {error.message}</div>; /// "Object is possibly 'null'" (for error)
} else
if (!stories) {
return <div>Loading...</div>
} else {
return (
<>
<ul className="stories">
{stories.results.map((story, idx) => { // "Object is possibly 'null'" (for stories)
// Parameter '__' implicitly has an 'any' type (for idx & story)
return (
<Story
key={idx}
title={story.title}
abstract={story.abstract}
img={
story &&
story.multimedia &&
story.multimedia[0] &&
story.multimedia[0].url
? story.multimedia[0].url
: null
}
alt={
story &&
story.multimedia &&
story.multimedia[0] &&
story.multimedia[0].caption
? story.multimedia[0].caption
: null
}
link={story.url}
/>
);
})}
</ul>
</>
);
}
}
export default News;
最佳答案
Typescript 不理解 null
的类型
const [error, setError] = useState<string>(null);
关于reactjs - typescript :API 获取类型错误: "Object is possibly ' null'。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66396001/