From b6d75ca401c16432b7042e5284eb6e9efe05c894 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Sat, 1 Mar 2025 15:00:54 -0500 Subject: [PATCH] Fix compatibility of createDevTools with React 19 types --- .../redux-devtools/src/createDevTools.tsx | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/redux-devtools/src/createDevTools.tsx b/packages/redux-devtools/src/createDevTools.tsx index ef9f288f..80e6d985 100644 --- a/packages/redux-devtools/src/createDevTools.tsx +++ b/packages/redux-devtools/src/createDevTools.tsx @@ -6,8 +6,9 @@ import { LiftedState, LiftedStore, Options, + InstrumentExt, } from '@redux-devtools/instrument'; -import { Action } from 'redux'; +import { Action, StoreEnhancer } from 'redux'; function logError(type: string) { if (type === 'NoStore') { @@ -46,13 +47,32 @@ export type Monitor< } >; +export interface DevToolsInstance, MonitorState> + extends Component> { + liftedStore?: LiftedStore; +} + +export interface DevToolsClass< + S, + A extends Action, + MonitorState, + MonitorAction extends Action, +> { + new (props: Props): DevToolsInstance; + instrument: ( + options?: Options, + ) => StoreEnhancer>; +} + export default function createDevTools< S, A extends Action, MonitorProps extends LiftedState, MonitorState, MonitorAction extends Action, ->(children: Monitor) { +>( + children: Monitor, +): DevToolsClass { const monitorElement = Children.only(children); const monitorProps = monitorElement.props; const Monitor = monitorElement.type;