Spooky types
Any TypeScript pros out there understand this behavior?
import {
OptionalRestArgsOrSkip,
useQuery,
} from "convex/react";
...
useQuery(anyQuery, "skip");
// ✅ All good
const skip: OptionalRestArgsOrSkip<any> = "skip";
// ❌ Type 'string' is not assignable to type '[args?: "skip" | EmptyObject | undefined] | [args: any]'.
useQuery(anyQuery, skip);
// ❌ Argument of type '[OptionalRestArgsOrSkip<Query>]' is not assignable to parameter of type 'OptionalRestArgsOrSkip<Query>'.
const skipAny: OptionalRestArgsOrSkip<any> = null as any;
// ✅ All good (it better be)
useQuery(anyQuery, skipAny);
// ❌ Argument of type '[[args?: "skip" | EmptyObject | undefined] | [args: any]]' is not assignable to parameter of type 'OptionalRestArgsOrSkip<Query>'.
// The type signature of `useQuery` is this:
function useQuery<Query extends FunctionReference<"query">>(
query: Query,
...args: OptionalRestArgsOrSkip<Query>
): Query["_returnType"] | undefinedimport {
OptionalRestArgsOrSkip,
useQuery,
} from "convex/react";
...
useQuery(anyQuery, "skip");
// ✅ All good
const skip: OptionalRestArgsOrSkip<any> = "skip";
// ❌ Type 'string' is not assignable to type '[args?: "skip" | EmptyObject | undefined] | [args: any]'.
useQuery(anyQuery, skip);
// ❌ Argument of type '[OptionalRestArgsOrSkip<Query>]' is not assignable to parameter of type 'OptionalRestArgsOrSkip<Query>'.
const skipAny: OptionalRestArgsOrSkip<any> = null as any;
// ✅ All good (it better be)
useQuery(anyQuery, skipAny);
// ❌ Argument of type '[[args?: "skip" | EmptyObject | undefined] | [args: any]]' is not assignable to parameter of type 'OptionalRestArgsOrSkip<Query>'.
// The type signature of `useQuery` is this:
function useQuery<Query extends FunctionReference<"query">>(
query: Query,
...args: OptionalRestArgsOrSkip<Query>
): Query["_returnType"] | undefined