Таким образом, тип данных из getServerSideProps
не передается на страницу.
Это модель:
export type TypeUser = {
_id?: Types.ObjectId;
name: string;
email: string;
image: string;
emailVerified: null;
profileDescription: string;
imageDownloadFormat: string;
};
Это мой getServerSideProps
export const getServerSideProps: GetServerSideProps = async (ctx: GetServerSidePropsContext) => {
const session = await getServerSession(ctx.req, ctx.res, authOptions);
if (!session) {
return {
redirect: {
destination: "/",
permanent: false,
},
};
}
const response = await NextAPIClient.get(`/api/users/by-email/${session.user?.email}`);
const user: TypeUser = await response.data.data;
return {
props: { user },
};
};
а это следующая страница:
const ProjectsPage: NextPage<InferGetServerSidePropsType<typeof getServerSideProps>> = ({ user }) => {
console.info(user.name);
...
Так что в основном я не получаю завершение типа, когда делаю user. что-нибудь
Как вы можете прочитать в документации , GetServerSideProps
— это общий тип, которому вы должны указать тип props
, возвращаемый getServerSideProps
, например так:
export type TypeUser = {
//...
imageDownloadFormat: string;
};
export const getServerSideProps: GetServerSideProps<{ user: TypeUser }> = async (
ctx: GetServerSidePropsContext
) => {
// As an example:
const user: TypeUser = {} as TypeUser;
return {
props: { user },
};
};
const ProjectsPage: NextPage<InferGetServerSidePropsType<typeof getServerSideProps>> = ({
user,
}) => {
// This would work now:
console.info(user.imageDownloadFormat);
// ...
};