Typescript utility library for dynamic path parameter
npm install ts-path-paramsts
generatePath('/users/:userId', { userId: 1 }); // "/users/1"
type Params = PathVariable<'/users/:userId'> // { userId: string | number }
`$3
`ts
const PathParamsPattern = {
Default: createParamsPattern(':'),
NextJSRoute: createParamsPattern('[', ']')
}
const generatePath = createPathGenerator(
PathParamsPattern.Default,
PathParamsPattern.NextJSRoute
)generatePath('/users/:userId', { userId: 1 });
generatePath('/users/[userId]', { userId: 1 });
type Params = PathVariable<'/users/[userId]', typeof PathParamsPattern.NextJSRoute>
`
API
$3
generatePath replaces path with params
`ts
generatePath('/user/:userId', { userId: 1 });
`
$3
return value is ParamPattern and used for createPathGenerator
- /user/:userId => createParamsPattern(':')
- /user/[userId] => createParamsPattern('[', ']')$3
createPathGenerator creates the generatePath function.
Created function replaces path by pattern
`ts
const genreatePath = createPathGenerator(
createParamsPattern(':'),
createParamsPattern('[', ']')
)
genreatePath('/user/:userId', { userId: 1 });
genreatePath('/user/[userId]', { userId: 1 });
`
$3
PathVariable infers the type from the path.
`ts
type MyParams = PathVariable<'/user/:userId'>;
// { userId: string | number } const pattern = createParamsPattern('[', ']');
type MySecondParams = PathVariable<'/user/[userId]', typeof pattern>
// { userId: string | number }
``