From 31c05c9119c5acf652c1a1592245bec5af4be71a Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Thu, 25 Jan 2024 05:47:29 -0600 Subject: [PATCH 1/4] Fix `expectExactType` to be compatible with TypeScript 5.4 --- packages/toolkit/src/tests/helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolkit/src/tests/helpers.ts b/packages/toolkit/src/tests/helpers.ts index 6146ca1ee0..def067495b 100644 --- a/packages/toolkit/src/tests/helpers.ts +++ b/packages/toolkit/src/tests/helpers.ts @@ -10,7 +10,7 @@ type Equals = IsAny< IsAny > export function expectExactType(t: T) { - return >(u: U) => {} + return (u: U & Equals) => {} } type EnsureUnknown = IsUnknown From 65dd3a33029f777cf6dba05ff6711eb9430ebfdb Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Thu, 25 Jan 2024 05:50:04 -0600 Subject: [PATCH 2/4] Fix `expectExactType` to be compatible with TypeScript 5.4 --- .../src/listenerMiddleware/tests/listenerMiddleware.test.ts | 2 +- packages/toolkit/src/query/tests/helpers.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/toolkit/src/listenerMiddleware/tests/listenerMiddleware.test.ts b/packages/toolkit/src/listenerMiddleware/tests/listenerMiddleware.test.ts index c6af789516..c5e65cb6b9 100644 --- a/packages/toolkit/src/listenerMiddleware/tests/listenerMiddleware.test.ts +++ b/packages/toolkit/src/listenerMiddleware/tests/listenerMiddleware.test.ts @@ -96,7 +96,7 @@ type Equals = IsAny< IsAny > export function expectExactType(t: T) { - return >(u: U) => {} + return (u: U & Equals) => {} } type EnsureUnknown = IsUnknown diff --git a/packages/toolkit/src/query/tests/helpers.tsx b/packages/toolkit/src/query/tests/helpers.tsx index 24e9edec1d..385f4cd3fd 100644 --- a/packages/toolkit/src/query/tests/helpers.tsx +++ b/packages/toolkit/src/query/tests/helpers.tsx @@ -299,7 +299,7 @@ type Equals = IsAny< IsAny > export function expectExactType(t: T) { - return >(u: U) => {} + return (u: U & Equals) => {} } type EnsureUnknown = IsUnknown From 1ae8a627da7e44c7dedecb67dab6f3c1ddc405dd Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Thu, 25 Jan 2024 05:58:56 -0600 Subject: [PATCH 3/4] Remove unused `@ts-expect-error` directives --- packages/toolkit/src/query/tests/unionTypes.test.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/toolkit/src/query/tests/unionTypes.test.ts b/packages/toolkit/src/query/tests/unionTypes.test.ts index eaceba0b68..856b55f98a 100644 --- a/packages/toolkit/src/query/tests/unionTypes.test.ts +++ b/packages/toolkit/src/query/tests/unionTypes.test.ts @@ -123,7 +123,6 @@ describe.skip('TS only tests', () => { } expectExactType('' as string | undefined)(result.currentData) - // @ts-expect-error expectExactType('' as string)(result.currentData) if (result.isSuccess) { @@ -131,7 +130,6 @@ describe.skip('TS only tests', () => { expectExactType('' as string)(result.currentData) } else { expectExactType('' as string | undefined)(result.currentData) - // @ts-expect-error expectExactType('' as string)(result.currentData) } } @@ -359,7 +357,6 @@ describe.skip('TS only tests', () => { const { refetch, ...useQueryResultWithoutMethods } = useQueryResult expectExactType(useQueryStateResult)(useQueryResultWithoutMethods) expectExactType(useQueryStateWithSelectFromResult)( - // @ts-expect-error useQueryResultWithoutMethods ) expectType>>( From 6c7c165ac2e65fb2773cbc29ec41eccc6c4b7225 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Fri, 26 Jan 2024 21:37:33 -0600 Subject: [PATCH 4/4] Replace `any` with `unknown` inside `Equals` conditional type --- packages/toolkit/src/query/tests/helpers.tsx | 2 +- packages/toolkit/src/query/tests/unionTypes.test.ts | 5 ++++- packages/toolkit/src/tests/helpers.ts | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/toolkit/src/query/tests/helpers.tsx b/packages/toolkit/src/query/tests/helpers.tsx index 385f4cd3fd..25a4002838 100644 --- a/packages/toolkit/src/query/tests/helpers.tsx +++ b/packages/toolkit/src/query/tests/helpers.tsx @@ -296,7 +296,7 @@ export function expectType(t: T): T { type Equals = IsAny< T, never, - IsAny + IsAny > export function expectExactType(t: T) { return (u: U & Equals) => {} diff --git a/packages/toolkit/src/query/tests/unionTypes.test.ts b/packages/toolkit/src/query/tests/unionTypes.test.ts index 856b55f98a..3a76b76e4b 100644 --- a/packages/toolkit/src/query/tests/unionTypes.test.ts +++ b/packages/toolkit/src/query/tests/unionTypes.test.ts @@ -1,10 +1,10 @@ import type { SerializedError } from '@reduxjs/toolkit' import type { FetchBaseQueryError, + TypedUseMutationResult, TypedUseQueryHookResult, TypedUseQueryStateResult, TypedUseQuerySubscriptionResult, - TypedUseMutationResult, } from '@reduxjs/toolkit/query/react' import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' import { expectExactType, expectType } from './helpers' @@ -123,6 +123,7 @@ describe.skip('TS only tests', () => { } expectExactType('' as string | undefined)(result.currentData) + // @ts-expect-error expectExactType('' as string)(result.currentData) if (result.isSuccess) { @@ -130,6 +131,7 @@ describe.skip('TS only tests', () => { expectExactType('' as string)(result.currentData) } else { expectExactType('' as string | undefined)(result.currentData) + // @ts-expect-error expectExactType('' as string)(result.currentData) } } @@ -357,6 +359,7 @@ describe.skip('TS only tests', () => { const { refetch, ...useQueryResultWithoutMethods } = useQueryResult expectExactType(useQueryStateResult)(useQueryResultWithoutMethods) expectExactType(useQueryStateWithSelectFromResult)( + // @ts-expect-error useQueryResultWithoutMethods ) expectType>>( diff --git a/packages/toolkit/src/tests/helpers.ts b/packages/toolkit/src/tests/helpers.ts index def067495b..14f303ef67 100644 --- a/packages/toolkit/src/tests/helpers.ts +++ b/packages/toolkit/src/tests/helpers.ts @@ -7,7 +7,7 @@ export function expectType(t: T): T { type Equals = IsAny< T, never, - IsAny + IsAny > export function expectExactType(t: T) { return (u: U & Equals) => {}