53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
|
import type { InferGetStaticPropsType, GetStaticPropsContext } from 'next'
|
||
|
import { expectTypeOf } from 'expect-type'
|
||
|
|
||
|
describe('InferGetServerSidePropsType', () => {
|
||
|
it('should work with sync functions', async () => {
|
||
|
function getStaticProps(context: GetStaticPropsContext) {
|
||
|
if (context.params?.notFound) {
|
||
|
return {
|
||
|
notFound: true,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
props: {
|
||
|
foo: 'bar',
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type PageProps = InferGetStaticPropsType<typeof getStaticProps>
|
||
|
|
||
|
expectTypeOf<PageProps>().toEqualTypeOf<{ foo: string }>()
|
||
|
})
|
||
|
|
||
|
it('should work with async functions', async () => {
|
||
|
async function getStaticProps(context: GetStaticPropsContext) {
|
||
|
if (context.params?.notFound) {
|
||
|
return {
|
||
|
notFound: true,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (context.params?.redirect) {
|
||
|
return {
|
||
|
redirect: {
|
||
|
destination: '/',
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
props: {
|
||
|
foo: 'bar',
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type PageProps = InferGetStaticPropsType<typeof getStaticProps>
|
||
|
|
||
|
expectTypeOf<PageProps>().toEqualTypeOf<{ foo: string }>()
|
||
|
})
|
||
|
})
|