ウェブサイト検索

TypeScript - Factoryパターンを使用するとPiniaの型が失われる


私のプロジェクトの必要のために、Piniaストアの作成をモジュール化するためのstoreFactoryを作成する必要があります。

ここでは特にパラメータを削除し、コード例を簡略化しました。

ファイルAにいるとき、storeFactoryの型は自動的に正しく取得されます

私がファイルBのとき、型は失われ、これだけが推測できる

StoreDefinition<"store_id", {} | _UnwrapAll<Pick<any, string | number>>, {} | Pick<...>, {} | Pick<...>

ファイルA

export function storeFactory() {
  const baseEntityComponents = {}
  const extensionComponents = {}

  return defineStore(`store_id`, () => ({ // type OK
    ...baseEntityComponents,
    ...extensionComponents,
  }));
}

ファイルB

import {storeFactory} './fileA.ts'
export const useStore = storeFactory(); // type lost

質問

自動型推論を保持したまま、define store をファクトリーメソッドでラップするにはどうすればいいですか?自動型推論が不可能な場合、手動で型を定義する方法はありますか。ストアのすべてのメソッドを持つインターフェースを作成しましたが、それは明らかに、これらのメソッドを含む pinia ストアのインスタンスと同じ型ではありません。