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 期待的是一个数组?
