Skip to content

Commit e2a7fec

Browse files
authored
fix: use const type parameters (#3085)
* fix: use const type parameters * chore: fix build
1 parent 5cb8220 commit e2a7fec

12 files changed

+55
-57
lines changed

packages/react-router/src/Matches.tsx

+15-22
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type {
1313
} from './structuralSharing'
1414
import type { AnyRoute, ReactNode, StaticDataRouteOption } from './route'
1515
import type { AnyRouter, RegisteredRouter, RouterState } from './router'
16-
import type { ResolveRelativePath, ToOptions } from './link'
16+
import type { ResolveRelativePath, ResolveRoute, ToOptions } from './link'
1717
import type {
1818
AllContext,
1919
AllLoaderData,
@@ -273,7 +273,7 @@ export type UseMatchRouteOptions<
273273
TFrom extends RoutePaths<TRouter['routeTree']> | string = RoutePaths<
274274
TRouter['routeTree']
275275
>,
276-
TTo extends string = '',
276+
TTo extends string | undefined = '',
277277
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
278278
TMaskTo extends string = '',
279279
TOptions extends ToOptions<
@@ -297,16 +297,13 @@ export function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {
297297

298298
return React.useCallback(
299299
<
300-
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
301-
TTo extends string = '',
302-
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
303-
TMaskTo extends string = '',
304-
TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,
300+
const TFrom extends string = string,
301+
const TTo extends string | undefined = undefined,
302+
const TMaskFrom extends string = TFrom,
303+
const TMaskTo extends string = '',
305304
>(
306305
opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
307-
):
308-
| false
309-
| RouteByPath<TRouter['routeTree'], TResolved>['types']['allParams'] => {
306+
): false | ResolveRoute<TRouter, TFrom, TTo>['types']['allParams'] => {
310307
const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts
311308

312309
return router.matchRoute(rest as any, {
@@ -322,11 +319,9 @@ export function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {
322319

323320
export type MakeMatchRouteOptions<
324321
TRouter extends AnyRouter = RegisteredRouter,
325-
TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
326-
TRouter['routeTree']
327-
>,
328-
TTo extends string = '',
329-
TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
322+
TFrom extends string = string,
323+
TTo extends string | undefined = undefined,
324+
TMaskFrom extends string = TFrom,
330325
TMaskTo extends string = '',
331326
> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
332327
// If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns
@@ -342,15 +337,13 @@ export type MakeMatchRouteOptions<
342337

343338
export function MatchRoute<
344339
TRouter extends AnyRouter = RegisteredRouter,
345-
TFrom extends RoutePaths<TRouter['routeTree']> = RoutePaths<
346-
TRouter['routeTree']
347-
>,
348-
TTo extends string = '',
349-
TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,
350-
TMaskTo extends string = '',
340+
const TFrom extends string = string,
341+
const TTo extends string | undefined = undefined,
342+
const TMaskFrom extends string = TFrom,
343+
const TMaskTo extends string = '',
351344
>(props: MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): any {
352345
const matchRoute = useMatchRoute()
353-
const params = matchRoute(props as any)
346+
const params = matchRoute(props as any) as boolean
354347

355348
if (typeof props.children === 'function') {
356349
return (props.children as any)(params)

packages/react-router/src/link.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -555,10 +555,10 @@ const preloadWarning = 'Error preloading route! ☝️'
555555

556556
export function useLinkProps<
557557
TRouter extends AnyRouter = RegisteredRouter,
558-
TFrom extends RoutePaths<TRouter['routeTree']> | string = string,
559-
TTo extends string = '',
560-
TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,
561-
TMaskTo extends string = '',
558+
const TFrom extends string = string,
559+
const TTo extends string | undefined = undefined,
560+
const TMaskFrom extends string = TFrom,
561+
const TMaskTo extends string = '',
562562
>(
563563
options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
564564
forwardedRef?: React.ForwardedRef<Element>,
@@ -976,10 +976,10 @@ export type CreateLinkProps = LinkProps<
976976

977977
export type LinkComponent<TComp> = <
978978
TRouter extends AnyRouter = RegisteredRouter,
979-
TFrom extends string = string,
980-
TTo extends string | undefined = undefined,
981-
TMaskFrom extends string = TFrom,
982-
TMaskTo extends string = '',
979+
const TFrom extends string = string,
980+
const TTo extends string | undefined = undefined,
981+
const TMaskFrom extends string = TFrom,
982+
const TMaskTo extends string = '',
983983
>(
984984
props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
985985
) => React.ReactElement

packages/react-router/src/redirects.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ export type ResolvedRedirect<
3737

3838
export function redirect<
3939
TRouter extends RegisteredRouter,
40-
TTo extends string | undefined,
41-
TFrom extends string = string,
42-
TMaskFrom extends string = TFrom,
43-
TMaskTo extends string = '',
40+
const TTo extends string | undefined,
41+
const TFrom extends string = string,
42+
const TMaskFrom extends string = TFrom,
43+
const TMaskTo extends string = '',
4444
>(
4545
opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
4646
): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> {

packages/react-router/src/route.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -800,9 +800,10 @@ export type RouteTypesById<TRouter extends AnyRouter, TId> = RouteById<
800800
TId
801801
>['types']
802802

803-
export function getRouteApi<TId, TRouter extends AnyRouter = RegisteredRouter>(
804-
id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>,
805-
) {
803+
export function getRouteApi<
804+
const TId,
805+
TRouter extends AnyRouter = RegisteredRouter,
806+
>(id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>) {
806807
return new RouteApi<TId, TRouter>({ id })
807808
}
808809

packages/react-router/src/useLoaderData.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export type UseLoaderDataRoute<out TId> = <
6969

7070
export function useLoaderData<
7171
TRouter extends AnyRouter = RegisteredRouter,
72-
TFrom extends string | undefined = undefined,
72+
const TFrom extends string | undefined = undefined,
7373
TStrict extends boolean = true,
7474
TSelected = unknown,
7575
TStructuralSharing extends boolean = boolean,

packages/react-router/src/useLoaderDeps.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export type UseLoaderDepsRoute<out TId> = <
4848

4949
export function useLoaderDeps<
5050
TRouter extends AnyRouter = RegisteredRouter,
51-
TFrom extends string | undefined = undefined,
51+
const TFrom extends string | undefined = undefined,
5252
TSelected = unknown,
5353
TStructuralSharing extends boolean = boolean,
5454
>(

packages/react-router/src/useMatch.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ type ThrowConstraint<
7676

7777
export function useMatch<
7878
TRouter extends AnyRouter = RegisteredRouter,
79-
TFrom extends string | undefined = undefined,
79+
const TFrom extends string | undefined = undefined,
8080
TStrict extends boolean = true,
8181
TThrow extends boolean = true,
8282
TSelected = unknown,

packages/react-router/src/useNavigate.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ export function useNavigate<
4949

5050
export function Navigate<
5151
TRouter extends AnyRouter = RegisteredRouter,
52-
TFrom extends string = string,
53-
TTo extends string | undefined = '.',
54-
TMaskFrom extends string = TFrom,
55-
TMaskTo extends string = '.',
52+
const TFrom extends string = string,
53+
const TTo extends string | undefined = undefined,
54+
const TMaskFrom extends string = TFrom,
55+
const TMaskTo extends string = '',
5656
>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {
5757
const { navigate } = useRouter()
5858

packages/react-router/src/useParams.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export type UseParamsRoute<out TFrom> = <
6363

6464
export function useParams<
6565
TRouter extends AnyRouter = RegisteredRouter,
66-
TFrom extends string | undefined = undefined,
66+
const TFrom extends string | undefined = undefined,
6767
TStrict extends boolean = true,
6868
TSelected = unknown,
6969
TStructuralSharing extends boolean = boolean,

packages/react-router/src/useRouteContext.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export type UseRouteContextRoute<out TFrom> = <
4646

4747
export function useRouteContext<
4848
TRouter extends AnyRouter = RegisteredRouter,
49-
TFrom extends string | undefined = undefined,
49+
const TFrom extends string | undefined = undefined,
5050
TStrict extends boolean = true,
5151
TSelected = unknown,
5252
>(

packages/react-router/src/useSearch.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export type UseSearchRoute<out TFrom> = <
6363

6464
export function useSearch<
6565
TRouter extends AnyRouter = RegisteredRouter,
66-
TFrom extends string | undefined = undefined,
66+
const TFrom extends string | undefined = undefined,
6767
TStrict extends boolean = true,
6868
TSelected = unknown,
6969
TStructuralSharing extends boolean = boolean,

packages/react-router/tests/link.bench.tsx

+14-10
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,20 @@ describe.each([
149149
'link to relative path',
150150
() => {
151151
const router = renderRouter(
152-
Array.from({ length: numberOfLinks }).map((_, i) => (
153-
<Link
154-
key={i}
155-
from="/"
156-
to={`./params/$param${Math.min(i, matchedParamId)}`}
157-
params={{ [`param${Math.min(i, matchedParamId)}`]: i }}
158-
>
159-
{i}
160-
</Link>
161-
)),
152+
Array.from({ length: numberOfLinks }).map((_, i) => {
153+
const to = `./params/$param${Math.min(i, matchedParamId)}`
154+
155+
return (
156+
<Link
157+
key={i}
158+
from="/"
159+
to={to}
160+
params={{ [`param${Math.min(i, matchedParamId)}`]: i }}
161+
>
162+
{i}
163+
</Link>
164+
)
165+
}),
162166
)
163167
render(<RouterProvider router={router} />)
164168
},

0 commit comments

Comments
 (0)