Smarter getKcContext typing
This commit is contained in:
parent
f6e6cf3750
commit
d1cc6ed88d
@ -15,11 +15,11 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
|
|||||||
}) {
|
}) {
|
||||||
const { mockData } = params ?? {};
|
const { mockData } = params ?? {};
|
||||||
|
|
||||||
function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"]>(params?: {
|
function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"] | undefined = undefined>(params?: {
|
||||||
mockPageId?: PageId;
|
mockPageId?: PageId;
|
||||||
storyParams?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
|
storyParams?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
|
||||||
}): {
|
}): {
|
||||||
kcContext: ExtendKcContext<KcContextExtension>["pageId"] extends PageId
|
kcContext: PageId extends undefined
|
||||||
? ExtendKcContext<KcContextExtension> | undefined
|
? ExtendKcContext<KcContextExtension> | undefined
|
||||||
: Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>;
|
: Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>;
|
||||||
} {
|
} {
|
||||||
|
@ -18,11 +18,11 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
|
|||||||
}) {
|
}) {
|
||||||
const { mockData } = params ?? {};
|
const { mockData } = params ?? {};
|
||||||
|
|
||||||
function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"]>(params?: {
|
function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"] | undefined = undefined>(params?: {
|
||||||
mockPageId?: PageId;
|
mockPageId?: PageId;
|
||||||
storyParams?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
|
storyParams?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
|
||||||
}): {
|
}): {
|
||||||
kcContext: ExtendKcContext<KcContextExtension>["pageId"] extends PageId
|
kcContext: PageId extends undefined
|
||||||
? ExtendKcContext<KcContextExtension> | undefined
|
? ExtendKcContext<KcContextExtension> | undefined
|
||||||
: Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>;
|
: Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>;
|
||||||
} {
|
} {
|
||||||
|
@ -258,4 +258,16 @@ describe("createGetKcContext", () => {
|
|||||||
|
|
||||||
assert<Equals<typeof kcContext, KcContext.Login | KcContext.Register>>();
|
assert<Equals<typeof kcContext, KcContext.Login | KcContext.Register>>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("no undefined as long as we provide a mock pageId", () => {
|
||||||
|
const { getKcContext } = createGetKcContext();
|
||||||
|
|
||||||
|
const mockPageId: KcContext["pageId"] = "login.ftl" as any;
|
||||||
|
|
||||||
|
const { kcContext } = getKcContext({
|
||||||
|
mockPageId
|
||||||
|
});
|
||||||
|
|
||||||
|
assert<Equals<typeof kcContext, KcContext>>();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user