首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与ts、useStorage (vueuse)和Pinia的类型有关的问题

与ts、useStorage (vueuse)和Pinia的类型有关的问题
EN

Stack Overflow用户
提问于 2022-02-17 23:24:18
回答 3查看 1.2K关注 0票数 4

下面的代码出现了一个奇怪的错误:Property 'length' does not exist on type '{ [RefSymbol]: true; }'.

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

代码语言:javascript
运行
复制
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
    },
  },
});
EN

回答 3

Stack Overflow用户

发布于 2022-02-18 01:45:48

我认为useStorage的返回值不是您所想的那样。我相信它返回一个ref类型,其中包含存储的实际数据的value属性。

尝试:

代码语言:javascript
运行
复制
useStorage('jobs', [] as Job[]).value
票数 2
EN

Stack Overflow用户

发布于 2022-02-18 00:20:37

现在,在你的帖子中没有太多的信息,但是根据错误信息说的,我猜如下所示。您正在使用以下类型定义对象

代码语言:javascript
运行
复制
{ [RefSymbol]: true; }

但是,由于在您的类型中不存在长度,我认为一个数组是期望的工作?

票数 0
EN

Stack Overflow用户

发布于 2022-02-18 10:24:05

当我在行前面加上错误时

代码语言:javascript
运行
复制
/* eslint-disable @typescript-eslint/ban-ts-comment */
// @ts-ignore
return this.foo.length; //Here used to be the error

然后它突然起作用了。它很丑,但很管用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71166628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档