Skip to content

Instantly share code, notes, and snippets.

@NuroDev
Created November 8, 2022 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NuroDev/2cf0f889c2dd3753b25f190f434b502b to your computer and use it in GitHub Desktop.
Save NuroDev/2cf0f889c2dd3753b25f190f434b502b to your computer and use it in GitHub Desktop.
❗️ Next.js inferred generateStaticParams ─ Infer the type of static router parameters by, optionally, passing in your `generateStaticParams` function
type GenerateStaticParamsFn<TParams extends Array<unknown>> = () => TParams | Promise<TParams>;
type ArrayElement<A> = A extends ReadonlyArray<infer T> ? T : never;
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
interface NextPageProps<
TGenerateStaticParams extends GenerateStaticParamsFn<TParams> | undefined = undefined,
TParams extends Array<unknown> = Array<unknown>,
> {
/**
* **params** (Optional)
*
* The dynamic route params object from the root segment down that to that page.
*/
params: TGenerateStaticParams extends GenerateStaticParamsFn<TParams>
? ArrayElement<UnwrapPromise<ReturnType<TGenerateStaticParams>>>
: Record<string, any> | undefined;
/**
* **searchParams** (Optional)
*
* The URL search params object.
*
* @example `acme.com/?q=cat` → `{ q: "cat" }`
*/
searchParams?: Record<string, any>;
}
export async function generateStaticParams() {
return [
{
slug: 'hello-world',
},
];
}
export default async function MyPage({ params }: NextPageProps<typeof generateStaticParams>) {
return <></>;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment