我正在定义一个 zustand 商店(与此问题无关的库),并希望避免为该商店维护一个单独的类型或接口,所以我试图从我的初始商店的返回类型中推断它:
export const useStore = create<ReturnType<typeof getInitialStore>>(
withImmer((set, get) => getInitialStore(set, get))
)
如您所见,我想将商店的类型设置为初始商店(见下文),而不是create<Store>
,这迫使我将每个新字段添加到初始商店以及Store
类型中。
这是我想从中推断类型的函数,但问题是它需要两个参数,这两个参数也取决于它的返回类型:
const getInitialStore = (
set: CustomSetState<ReturnType<typeof getInitialStore>>,
get: GetState<ReturnType<typeof getInitialStore>>
) => {
// ...
return { my, store, fields }
}
TS 不允许我这样做并给我这个错误:
'getInitialStore' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
有没有办法在没有单独维护的Store
类型的情况下实现这一点?