Типы Next.js не выводятся из getServerSideProps в NextPage

Таким образом, тип данных из 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. что-нибудь

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы можете прочитать в документации , 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);
  // ...
};

Другие вопросы по теме