这是我的index.tsx文件:
import type { NextPage } from "next";
type AppProps = {
articles: {
userId: number;
id: number;
title: string;
body: string;
};
};
const Home: NextPage = ({articles}:AppProps) => {
return (
<div>
<h1>Welcome to {articles.title}</h1>
</div>
);
};
export const getStaticProps = async () => {
const res = await fetch('https://jsonplaceholder.typicode.com/posts/1')
const articles = await res.json();
return {
props: { articles },
};
};
export default Home;
代码确实被渲染了,但是在我的Home
组件中有一个错误。它显示了以下错误消息:
Type '({ articles }: AppProps) => JSX.Element' is not assignable to type 'NextPage<{}, {}>'.
Type '({ articles }: AppProps) => JSX.Element' is not assignable to type 'FunctionComponent<{}> & { getInitialProps?(context: NextPageContext): {} | Promise<{}>; }'.
Type '({ articles }: AppProps) => JSX.Element' is not assignable to type 'FunctionComponent<{}>'.
Types of parameters '__0' and 'props' are incompatible.
Property 'articles' is missing in type '{}' but required in type 'AppProps'.
我做错了什么吗?我不知道。请帮助。
2条答案
按热度按时间fruv7luv1#
NextPage
基于NextComponentType
,NextComponentType
有一个类型参数列表,其中包含初始页面数据(props
)的默认值({}
):当将
props
传递给NextPage
组件时,还需要将类型作为参数传递。这将是一个TypeScript错误,因为
articles
在类型{}
上不存在:因此,要为
NextPage
提供有关props
的类型信息,请将AppProps
作为类型参数传递,如下所示:egmofgnx2#
您可以根据需要使用
InferGetStaticPropsType
或InferGetServerSidePropsType
。使用您的示例: