直接上代码如下,这是我封装的一个图片组件,只要传入/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”。
是否还需要进行类型转换?如何解决这个问题呢?
0 个回复