# mpx/valid-properties
校验properties有效值
- ⚙️ 这条规则包含在
"plugin:mpx/mpx-essential"
。
此规则检查每个properties的值是否有效, 推荐开启ts获取更完善的类型校验。
# 📖 规则详情
保障properties的配置项有效,要求properties的配置项是只能是类型或对象。支持对<script setup>
中的 defineProps 校验。
当配置项为对象时,只允许存在配置的键(默认"type"、"value"、"optionalTypes"、"observer")
,强制要求配置"type"
。不允许配置空对象,因为在微信低版本基础库会报错导致白屏;不允许其他无效键存在,例如"default"会在skyline下引起报错。
<script>
// ✓ GOOD
createComponent({
properties: {
propsA: {
type: String,
value: ""
},
propsB: Object,
propsC: {
type: String,
optionalTypes:[Number]
}
}
})
// ✓ PropType ts
createComponent({
properties: {
propsA: {
type: String as PropType<Str>,
value: ""
},
propsB: Object as PropType<Obj>
}
})
// ✗ BAD
createComponent({
properties: {
propsA: {},
propsB: '',
propsC: {
type: Object,
default: {}
},
propsD: [1,2],
propsE: {
value: {}
}
}
})
</script>
<script setup>
// ✓ GOOD
const props = defineProps({
propsA: {
type: Object,
value: {}
},
propsB: Array
})
// ✗ BAD
const badProps = defineProps({
propsA: {
type: Object,
default: {}
},
propsB: {}
})
</script>
# 🔧 选项
可配置allowKeys选项,允许properties的配置对象存在这些key。默认为"type", "value", "optionalTypes", "observer"
{
"mpx/valid-wx-key": ["error", {
"allowKeys": ["type", "value","optionalTypes","observer"]
}]
}