Ricerca nel sito web

typescript - Pinia ha perso i suoi tipi quando si utilizza il pattern factory


Per la necessità del mio progetto, ho bisogno di creare una storeFactory per modulare la creazione di un store Pinia.

Ho specificamente rimosso i parametri qui e semplificato l'esempio di codice.

Quando sono nel File A, il tipo di storeFactory viene recuperato automaticamente in modo corretto

Quando sono il file B il tipo viene perso e solo questo può essere dedotto

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

File A

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

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

File B

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

Domanda

Come possiamo preservare il tipo automatico mentre avvolgiamo lo store definito in un metodo factory? Se l'inferenza automatica del tipo non è possibile, c'è un modo per definire manualmente il tipo? Ho creato un'interfaccia con tutti i metodi dello store, ma ovviamente non è lo stesso tipo di un'istanza di uno store Pinia che contiene quei metodi.