0

我正在定义一个 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类型的情况下实现这一点?

4

0 回答 0