通过泛型参数定义props时,可选的boolean类型默认值异常
Vue version
3.3.4
Link to minimal reproduction
Steps to reproduce
- 通过SFC中的defineProps给子组件接收参数
- 通过泛型参数定义props的约束
- 当类型为可选的boolean时,得到的默认值是false
- 其他可选的基础类型都可以正常不返回
What is expected?
预期所有的可选参数在不申明的情况下不输出对应的key
What is actually happening?
类型为可选的boolean时,得到的默认值是false
System Info
No response
Any additional comments?
No response
Go to docs and read about it. if u want boolean to be undefined, make it undefined with defaults.
const props = withDefaults(defineProps<Props>(), {
prop: undefined,
})
基于withDefaults实现当然是可以的,但是我并不希望通过这种方式主动申明,我认为可选的boolean类型应该和可选的number类型或者string类型有一样的表现,而不是直接输出false @modelair
@fisheep01 https://vuejs.org/guide/components/props.html#prop-validation check it.
@fisheep01 https://vuejs.org/guide/components/props.html#prop-validation check it.
我了解文档中的申明,我想表达的是为何针对boolean需要有个额外的逻辑,而不是统一的undefined行为,我觉得这样会给开发者一个额外的理解负担 在实现的时候是因为什么限制或者其他考虑吗? @modelair
@fisheep01 为了对齐原生 HTML 标签的 boolean attributes 的行为。https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML