jamiebuilds / unstated-next

200 bytes to never think about React state management libraries ever again
MIT License
4.18k stars 145 forks source link

How to produce types for Containers? #91

Open colthreepv opened 3 years ago

colthreepv commented 3 years ago

In certain cases I want to extract functions leveraging containers away from component files, for example

import { longFunction } from './state-helpers'

const Builder: React.FC = () => {
  const app = AppContainer.useContainer()
  const complicatedValue = useMemo(() => longFunction(app), [app])
  return (...)
}

for now I have used on my state.ts something like this:

export const AppContainer = createContainer(useApp)
export type AppContainerState = ReturnType<typeof useApp>

and on my state-helpers.ts my function would be like:

export const longFunction = (app: AppContainerState) => app

The question is, there is anything more elegant than ReturnType<typeof useApp> ?