Slide 23
Slide 23 text
型レベル Web アプリ
export type Handle =
Routes extends { [_ in Req["path"]]: infer Handlers }
? Handlers extends { [_ in Req["method"]]: infer Res }
? Res
: Req["method"] extends "HEAD"
? Handlers extends { GET: infer Res }
? Res
: res.Error<405, "Method Not Allowed\n"> & hs.Allow>
: res.Error<405, "Method Not Allowed\n"> & hs.Allow>
: res.Error<404, "Not Found\n">;
type AllowedMethods = utils.Join<
utils.UnionToTuple<"GET" extends keyof Handlers ? "HEAD" | keyof Handlers : keyof
Handlers>,
", "
>;