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
更多关于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 时,确实可能会遇到一些类型提示不正确的问题,尤其是在使用 computed 的 getter 和 setter 时。
问题描述
在使用 Vue 3 的 computed 时,TypeScript 可能会无法正确推断 getter 和 setter 的类型,导致类型提示不正确。例如:
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);
}
});

