uni-app 中用 TypeScript 写页面,props 类型怎么定义才不报错?
我在 uni-app 里用 TypeScript 写组件,想给 props 加类型,但总是提示类型不匹配或者 undefined。明明按照文档写了,但还是不行,是不是写法有问题?
比如下面这段代码,我传了个字符串进去,但控制台一直警告类型错误:
export default defineComponent({
props: {
title: {
type: String,
required: true
}
},
setup(props) {
console.log(props.title.toUpperCase()); // 这里 TS 报错说可能是 undefined
}
});
defineProps来定义,二是不能混用defineComponent和手动 props 声明,容易类型错乱。直接用这个写法就稳了:
但更推荐用 Vue 3 的
defineProps写法,更简洁也更 ts 友好,注意必须在<script setup>里用:如果你非要写
<script>不用 setup,那得用defineComponent+PropType:记住:别用
type: String+required: true这种老写法混 ts,它只在运行时校验,ts 编译阶段还是可能报错。要么全用defineProps泛型,要么加PropType显式断言。