2***@qq.com
2***@qq.com
  • 发布:2025-01-10 10:31
  • 更新:2025-01-10 10:31
  • 阅读:13

使用uniappX, defineProps一直不匹配类型, 求指点

分类:uni-app x

直接上代码如下,这是我封装的一个图片组件,只要传入/static/img/myPic.png这样的图片本地地址,就能方便展示出图片,支持传入ratio比例,能调节图片大小:

<template>  

    <image class="icon" :src="props.src" :style="{width:myRatioSize['width'],height:myRatioSize['height']}" />  

</template>  

<script setup lang="uts">  

    const props = defineProps({  
        width: {  
            type: Number, //类型一直不匹配  
            required: true,  
            default: 10   //默认不知道起不起作用?  
        },  
        height: {  
            type: Number,  
            required: true,  
            default: 10,  
        },  
        ratio: {  
            type: Number,  
            default: 1  
        },  
        src: {  
            type: String,  
            default: '',  
            required: true  
        }  
    })  

    const myRatioSize = computed<UTSJSONObject>(() => {  

        let _w : number = props.width;  //这里提示Android错误,不能将类型“Record<string, any>”分配给类型“number”。  
        let _h : number = props.height;  //这里提示Android错误,不能将类型“Record<string, any>”分配给类型“number”。  

        const _ratio : number = props.ratio;  //这里提示Android错误,不能将类型“Record<string, any>”分配给类型“number”。  

               return {  

              width: (_w * _ratio) + 'rpx',  
              height: (_h * _ratio) + 'rpx'  

                }  

        }  
    })  
</script>  

<style>  

</style>

但是编译运行本地基座,编辑器一直报红色字错误:

[plugin:uni:app-uts] 编译失败
10:21:17.704 ‌error: 类型不匹配: 推断类型是Any,但预期的是Number。‌

明明defineProps默认给定了Number类型,但我 let w = props.width, 就一直报错,并且红色下划线指示w处:不能将类型“Record<string, any>”分配给类型“number”。

是否还需要进行类型转换?如何解决这个问题呢?

2025-01-10 10:31 负责人:无 分享
已邀请:

要回复问题请先登录注册