react native - Typescript-fel med tRPC useQuery-argumenttyper i Jest-test


Jag har ett monorepo som innehåller en React Native-app. Inom en av komponenterna har jag följande kod:

const { data: user, refetch } = trpc.useQuery([
    "user.get",
    { id: state.user!.id },
])

// Later I use the user I receive from this query.
// Simplified for readability
bluetoothModule.addToDevices(user.devices)

Värdet trpc i koden ovan är inställt på följande sätt, över flera filer i olika arbetsytor:

export const appRouter = createRouter()
    .transformer(superjson)
    .merge("user.", userRouter)
    // Various other routers...

export type AppRouter = typeof appRouter
export const trpc = createReactQueryHooks<AppRouter>()

Det här fungerar bra i den faktiska appen. Däremot har jag nu börjat lägga till ett test som använder react-native-testing-library för att testa den här komponenten.

describe("Sensor Status page", () => {
    it("shows sensors correctly", async () => {
        render(
            <SensorStatus
                // Some unrelated props here
            />
        )
    })
})

När detta test körs får jag följande fel:

Type '{ id: string; }' is not assignable to type '"status" | "user.get" | "auth.authenticate" | "event.overview" | "event.temp" | "event.pressure" | "event.movement" | "event.all" | "user.all" | "device.get"'.
      Type '{ id: string; }' is not assignable to type '"device.get"'.

Jag får också detta ytterligare fel när jag försöker använda värdet user.devices.

Property 'devices' does not exist on type 'string | AuthResponse | OverviewResults | GetAllUsersResponse[] | Device | (User & { devices: Device[]; }) | { ...; }[] | { ...; }[] | { ...; }[] | { ...; }'.
      Property 'devices' does not exist on type 'string'.

Med lite mer undersökning upptäckte jag att det förväntar sig följande typ för useQuery-funktionen.

[
    any,
    "status" | "user.get" | "auth.authenticate" | "event.overview" | "event.temp" | "event.pressure" | "event.movement" | "event.all" | "user.all" | "device.get",
    any,
    [...?]
]

Jag har försökt imitera tRPC, men detta verkar inte påverka TypeScript-kompileringen.

Om jag lägger till ts-ignore-kommentarer i komponenten kommer testet att fungera bra. Men jag vill helst inte försämra appkoden för en tests skull. Vet någon varför Typescript förväntar sig en annan typ i testet, eller vet om ett renare sätt att fixa detta?