typescript - Problem med typer med ts, useStorage (vueuse) och Pinia


Jag får ett konstigt fel i följande kod: Egenskapen 'length' finns inte på typen '{ [RefSymbol]: true; }'.

Men när jag kollar typen av foo i getCount-funktionen säger min IDE att det är av typen Foo[]. Vad gör jag fel?

import { defineStore } from 'pinia';
import { useStorage } from '@vueuse/core';

interface Foo {}

export const useFooStore = defineStore('foo', {
  state: () => ({
    foo: useStorage('foo', [] as Foo[]),
  }),
  actions: {
    getCount() {
      return this.foo.length; //Here's the error
    },
  },
});

Svar #1

Jag tror att returvärdet av useStorage inte är vad du tror. Jag tror att det returnerar en slags ref, med en value-egenskap som innehåller de faktiska data som lagras.

Försök :

useStorage('jobs', [] as Job[]).value

Svar #2

Nu finns det inte så mycket information i ditt inlägg men utifrån vad felmeddelandet säger skulle jag gissa följande. Du definierar ett objekt med typen

{ [RefSymbol]: true; }

men eftersom längd inte finns på din typ tror jag att en array förväntas för jobb?

Relaterade artiklar