react-router-typesafe-routes
Version:
Enhanced type safety via validation for all route params in React Router v7.
13 lines (12 loc) • 741 B
TypeScript
interface Parser<T, THint extends string = never> {
stringify: (value: T, context: ParserContext<THint>) => string;
parse: (value: string, context: ParserContext<THint>) => unknown;
}
interface ParserContext<THint extends string = never> {
hint?: THint;
kind: "pathname" | "search" | "hash";
}
type ParserHint = "string" | "number" | "boolean" | "date" | "unknown";
type ParserType<T extends ParserHint> = T extends "unknown" ? unknown : T extends "string" ? string : T extends "date" ? Date : T extends "number" ? number : T extends "boolean" ? boolean : never;
declare function parser<T extends ParserHint = "unknown">(defaultHint?: T): Parser<ParserType<T>, ParserHint>;
export { parser, Parser, ParserHint, ParserType };