#loader/beforeLoad type error when using both

3 messages · Page 1 of 1 (latest)

boreal lynx
#

Using almost fresh new project, this code shows type error when defining a Route:

export const Route = createFileRoute("/")({
  component: () => <span>noop</span>,
  loader: (ctx) => 1,
  beforeLoad: (ctx) => 2,
});

The error:

Type '(ctx: BeforeLoadContextOptions<Register, RootRoute<Register, undefined, {}, AnyContext, AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, ... 6 more ..., undefined>) => number' is not assignable to type '(ctx: BeforeLoadContextOptions<Register, RootRoute<Register, undefined, {}, AnyContext, AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, ... 6 more ..., undefined>) => never'.
  Type 'number' is not assignable to type 'never'.ts(2322)

FIle at ./src/routes/index.tsx but similar error for other routes

The strange thing is that if I throw error in beforeLoad or delete ctx argument in loader or beforeLoad there is no type errors...

So this works fine(omit ctx in beforeLoad):

export const Route = createFileRoute("/")({
  component: () => <span>noop</span>,
  loader: (ctx) => 1,
  beforeLoad: () => 2,
});

And this works fine(omit ctx in loader):

export const Route = createFileRoute("/")({
  component: () => <span>noop</span>,
  loader: () => 1,
  beforeLoad: (ctx) => 2,
});

And this works fine(throw error):

export const Route = createFileRoute("/")({
  component: () => <span>noop</span>,
  loader: (ctx) => 1,
  beforeLoad: (ctx) => { throw 1 },
});

I cant understand why? And what am i doing wrong...
I am ready to provide StackBlitz reproduction if needed, just hoping maybe anyone already knows the answer...

covert basin
boreal lynx
#

Omg, thank you, I could not have imagined the property order would matter.

Such a catch, saved me quite some time, Thank YOU!