next.ts 618 B

1234567891011121314151617
  1. import type { NextPage } from 'next'
  2. import type { AppProps } from 'next/app'
  3. import type { ComponentType, ReactElement, ReactNode } from 'react'
  4. export type AppPropsWithLayout = AppProps<{ dehydratedState: any }> & {
  5. Component: NextPageWithLayout
  6. }
  7. export type NextPageWithLayout<P = { dehydratedState: any }, IP = P> = NextPage<P, IP> & {
  8. getLayout?: (page: ReactElement) => ReactNode
  9. }
  10. export function isNextPageWithLayout<T>(
  11. Component: ComponentType<T> | NextPageWithLayout<T, T>
  12. ): Component is NextPageWithLayout<T, T> {
  13. return 'getLayout' in Component && typeof Component.getLayout === 'function'
  14. }