TypeScript在vue3中的应用(Ref和ComputedRef的应用)

首先,我承认,我vue3和ts都不是很熟。然后在使用过程中就发现了这样一个情况。

复制代码
const list: {isBoob: boolean; count: number;}[] = computed(() => {
  let arr: number[] = new Array(total.value).fill(0).fill(1, 0, boobNumber.value) // 初始化数组
  arr = arr.sort((a,b) => Math.random() - 0.5) // 随机排序
  return arr.map((item: number, index): {isBoob: boolean; count: number;} => {
    // 返回对象组成的数组
    return {
      isBoob: !item,
      count: index
    }
  })
})
// error:类型"ComputedRef<{ isBoob: boolean; count: number; }[]>"缺少类型"{ isBoob: boolean; count: number; }[]"的以下属性: length, pop, push, concat 及其他 29 项。

其实现在想来,提示也很明白了,list的类型是ComputedRef<{ isBoob: boolean; count: number; }[]>,但是我当时没搞懂ComputedRef是什么,所以懵住了。

这里介绍vue3的特点,vue3在定义响应式数据时,需要使用x = ref()包裹数据,计算数据需要x = computed()。使用的时候也需要用 x.value。

所以对于变量x来说,他的数据类型一定不是括号内的内容或者说value的类型。

而ts为了应对这种情况就有了Ref和ComputedRef,分别表示这两种响应式数据。

复制代码
x :Ref<number> = ref(10)

x :ComputedRef<number> = computed(() => x*2)
相关推荐
森叶4 小时前
Electron 实战:用 utilityProcess 开子进程,去端口化承载协议处理,并由主进程拦截渲染请求后统一中转
前端·javascript·electron
精益数智工坊4 小时前
红牌作战是什么?红牌作战的实施步骤与核心要点
大数据·运维·前端·人工智能·精益工程
techdashen4 小时前
Cloudflare HTML 解析器的十年演化史(一)
前端·html
ZC跨境爬虫4 小时前
移动端爬虫工具Fiddler完整配置流程:PC+安卓模拟器全覆盖,零基础一次配置成功
android·前端·爬虫·测试工具·fiddler
GISer_Jing4 小时前
前端视角:B端传统配置化现状与AI冲击趋势
前端·人工智能·ai编程
课灵_klhubs4 小时前
课灵h5p-3D 模型 (3D Model)教程
前端·3d·课程设计·教程·课灵·h5p
倾颜4 小时前
接入 MCP 之后,我如何让 Skill 稳定消费 Tool / Resource / Prompt
前端·next.js·mcp
小赵同学WoW4 小时前
BroadCast Channel() 浏览器跨标签页通信的实现方式之一
前端·浏览器
\xin4 小时前
pikachu自编exp,xss之盲打,过滤,htmlspecialchars,href,js
前端·xss
ZC跨境爬虫5 小时前
前端实战复盘:从零完成Apple中国大陆官网UI第一阶段全量静态复刻
前端·css·ui·html