From 886bcb7d625a657892053041d8ebc357bad2cc99 Mon Sep 17 00:00:00 2001 From: Xavier Fournet <461943+xfournet@users.noreply.github.com> Date: Fri, 17 Jul 2026 18:48:10 +0200 Subject: [PATCH] fix: change PreloadedQuery back to interface to allow type inference based on PreloadedQuery generic type (#5361) --- packages/react-relay/ReactRelayTypes.d.ts | 34 +++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/react-relay/ReactRelayTypes.d.ts b/packages/react-relay/ReactRelayTypes.d.ts index fdbe42bbbeaf..d74b055777dd 100644 --- a/packages/react-relay/ReactRelayTypes.d.ts +++ b/packages/react-relay/ReactRelayTypes.d.ts @@ -132,23 +132,27 @@ export type LoadQueryOptions = Readonly<{ export type EnvironmentProviderOptions = Record> = T; -export type PreloadedQuery< +// eslint type alias suggestion is not equivalent to the interface since it's looing the generic type information `TQuery`, preventing type inference, eg on usePreloadedQuery +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +export interface PreloadedQuery< TQuery extends OperationType, TEnvironmentProviderOptions = EnvironmentProviderOptions, -> = Readonly<{ - kind: 'PreloadedQuery'; - environment: IEnvironment; - environmentProviderOptions?: TEnvironmentProviderOptions | null | undefined; - fetchKey: string | number; - fetchPolicy: PreloadFetchPolicy; - networkCacheConfig?: CacheConfig | null | undefined; - id?: string | null | undefined; - name: string; - source?: Observable | null | undefined; - variables: VariablesOf; - dispose: DisposeFn; - isDisposed: boolean; -}>; +> extends + Readonly<{ + kind: 'PreloadedQuery'; + environment: IEnvironment; + environmentProviderOptions?: TEnvironmentProviderOptions | null | undefined; + fetchKey: string | number; + fetchPolicy: PreloadFetchPolicy; + networkCacheConfig?: CacheConfig | null | undefined; + id?: string | null | undefined; + name: string; + source?: Observable | null | undefined; + variables: VariablesOf; + dispose: DisposeFn; + isDisposed: boolean; + }> +{} export type PreloadQueryStatus = Readonly<{ cacheConfig?: CacheConfig | null | undefined;