testAppsReturnPages

tcmts.cli.pages.testAppsReturnPages · #n24m4664 · term

import { returnsAPage, returnTypeOf } from "#codebase/tcmts/cli/pages";

export const testAppsReturnPages = () => {
  const ok = (sig: string, want: boolean) => {
    const r = returnTypeOf(sig);
    if ((r !== undefined && returnsAPage(r)) !== want) throw new Error(`${sig}: ${r}`);
  };
  ok("() => Promise<void>", true);
  ok("() => Element", true);
  ok("() => JSX.Element", true);
  ok("(props?: { a: () => void }) => React.JSX.Element", true);
  ok("<A>(x?: A) => void", true);
  ok("(options?: { readonly database?: string }) => Layer<EventJournal, never, never>", false);
  ok("() => Promise<number>", false);
  ok("{ (): void; (x: number): void }", false);
  ok("Layer<A, never, never>", false);
}

uses