diff --git a/packages/preferences/CHANGELOG.md b/packages/preferences/CHANGELOG.md index d0cc1b7cdbfae2..1f850c48d46b06 100644 --- a/packages/preferences/CHANGELOG.md +++ b/packages/preferences/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- TypeScript types added for accessing the `core/preferences` store by name + ## 4.36.0 (2025-11-26) ## 4.35.0 (2025-11-12) diff --git a/packages/preferences/src/store/index.ts b/packages/preferences/src/store/index.ts index e997a78811a2db..d9ab8b3d5b937c 100644 --- a/packages/preferences/src/store/index.ts +++ b/packages/preferences/src/store/index.ts @@ -28,3 +28,19 @@ export const store = createReduxStore< } ); register( store ); + +type SubsequentArgsOfFunc< F > = F extends ( arg: any, ...args: infer R ) => any + ? R + : never; +type CurriedSelectors = { + [ key in keyof typeof selectors ]: ( + ...args: SubsequentArgsOfFunc< ( typeof selectors )[ key ] > + ) => ReturnType< ( typeof selectors )[ key ] >; +}; +declare module '@wordpress/data' { + function dispatch( key: typeof STORE_NAME ): typeof actions; + function select( key: typeof STORE_NAME ): CurriedSelectors; + + function useDispatch( key: typeof STORE_NAME ): typeof actions; + function useSelect( key: typeof STORE_NAME ): CurriedSelectors; +}