网站搜索

typescript - ts、useStorage(vueuse)和 Pinia 的类型问题


我在以下代码中遇到了一个奇怪的错误: 属性 'length' 在类型 '{ [RefSymbol]: true; }' 上不存在。

但是当我在 getCount 函数中检查 foo 的类型时,我的 IDE 告诉我是 Foo[] 类型。我哪里做错了?

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
    },
  },
});

答案#1

我认为 useStorage 的返回值并不是你想的那样。我相信它返回的某种 ref,对象中有一个 value 属性,包含实际存储的数据。

尝试:

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

答案#2

现在你的帖子里信息不多,但根据错误信息的内容,我猜测如下。你正在定义一个类型为

{ [RefSymbol]: true; }

但是由于你的类型上不存在 length,我认为 jobs 期待的是一个数组?

相关文章