14 lines
342 B
TypeScript
14 lines
342 B
TypeScript
type ParseUrlParams<Url> = Url extends `${infer Start}/${infer Rest}`
|
|
? ParseUrlParams<Start> & ParseUrlParams<Rest>
|
|
: Url extends `{${infer Param}}`
|
|
? { [P in Param]: string }
|
|
: {};
|
|
|
|
function navigate<P extends string>(path: P, params: ParseUrlParams<P>) {
|
|
// ...
|
|
}
|
|
|
|
function main() {
|
|
navigate("/foo/bar", { foo: "asd" });
|
|
}
|