* 当 ref 对象作为 reactive 对象的属性,在定义 reactive 对象获取其类型时或读取 reactive 对象的 ref 属性时都会对 ref 对象进行自动的解包,因此就出现了以下的 ts 报错 * 实际上下面的两个报错都是符合 vue 的特性的,并没有问题 * 有没有什么办法可以让这两种情况可以正确的识别类型,或者说可以让这两种情况不报错(之前一种用 as any 和 as unknown as xxx 来解决,感觉是在是太丑陋了) import type { Ref } from 'vue' import {ref, reactive} from 'vue' interface IObj { count: Ref | null; arr: { // 如果是这种自定义属性的对象类型则不会在 reactive 返回值的类型中进行解包 [key:string]: Ref } | null; o?: { oo: Ref } } const obj = reactive({ count: null, arr: null }) /* reactive 返回值的类型 const obj: { count: number | null; arr: { [key: string]: Ref; } | null; o?: { oo: number; } | undefined; } */ // 这里ts报错: 不能将类型“Ref”分配给类型“number” obj.count = ref(1) obj.arr = { aa: ref(0), bb: ref(1) } // 这里ts报错: 不能将类型“Ref”分配给类型“number” let num:number = obj.arr.aa console.log(num); // 0