uni-app ts+vue3项目computed使用getter和setter写法时类型提示不正确 官方何时能优化ts支持 uni-app的vue3存在多处ts类型错误

uni-app ts+vue3项目computed使用getter和setter写法时类型提示不正确 官方何时能优化ts支持 uni-app的vue3存在多处ts类型错误

产品分类

HbuilderX

PC开发环境操作系统

Windows

PC开发环境操作系统版本号

win10

HBuilderX版本号

3.99

示例代码:

const props = withDefaults(defineProps<{  
    value : string[]  
}>(), {  
    value: () => []  
})  
const emits = defineEmits(['update:value'])  
const list= computed({  
    get() {  
        return props.value  
    },  
    set(v) {  
        emits('update:value', v)  
    }  
})

操作步骤:

按代码示例可复现

预期结果:

应正确推导出类型

实际结果:

类型提示为unknown

bug描述:

vue3的computed,使用getter和setter的写法时,类型提示不正确


更多关于uni-app ts+vue3项目computed使用getter和setter写法时类型提示不正确 官方何时能优化ts支持 uni-app的vue3存在多处ts类型错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app ts+vue3项目computed使用getter和setter写法时类型提示不正确 官方何时能优化ts支持 uni-app的vue3存在多处ts类型错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 是一个基于 Vue.js 的跨平台开发框架,支持使用 TypeScript 进行开发。然而,在 uni-app 中使用 Vue 3 和 TypeScript 时,确实可能会遇到一些类型提示不正确的问题,尤其是在使用 computedgettersetter 时。

问题描述

在使用 Vue 3 的 computed 时,TypeScript 可能会无法正确推断 gettersetter 的类型,导致类型提示不正确。例如:

import { computed } from 'vue';

const value = computed({
  get() {
    return 42; // 假设返回一个 number
  },
  set(newValue) {
    // TypeScript 可能会认为 newValue 是 any 类型
    console.log(newValue);
  }
});

在上面的代码中,newValue 的类型可能会被错误地推断为 any,而不是 number

解决方案

目前,你可以通过手动添加类型注解来解决这个问题:

import { computed } from 'vue';

const value = computed<number>({
  get() {
    return 42;
  },
  set(newValue: number) {
    console.log(newValue);
  }
});
回到顶部