[vuejs/core]泛型参数定义props时,可选的boolean类型默认值

2024-07-05 125 views
0
Vue 版本

3.3.4

最小复制链接

https://play.vuejs.org/#eNp9UbtuwzAM/BVCS1sgloZ0Mpw0Rads+QAtfjCp2ugBiU5bGP73UnEaGCmQTUeeeDzeIF5DkKceRSmq1EYTCBJSH9baGRt8JHjzNsA+egsPUmWQ6Q/aVWriM5MBoQ3HmpARQHX+o/hdqWtDLMQ0sbB1kB/JO9YcMl1fGkmLEs6VXGOVjLV4JwqpVKp34fMgW2/Vh nsq9o6MxaLzdrOUS/msOpNoXpaYbNFE/5UwsqAWi9lsxcUTxiKi6zBivKt1w53r3bT+aWbJUbuR7dNPQEmJbeP3+bTGEcZ93SJsd5Px+qWExvsj1nxUgIah623D6zFqGSWKxh2meX9hzLI71u6w0iKf8pojwCXJIcuM1ywv63CUPNq7RBCiD7CCDvfG4Y5Bqra79ePT3bCHYfo3sst53OMvU33P7g ==

重现步骤
  1. 通过SFC 中的 defineProps 给子组件接收参数
  2. 发布泛型参数定义的约束
  3. 当类型为可选的boolean时,得到的默认值是false
  4. 其他可选基础类型都可以正常返回
预期是什么?

预期所有的可选参数在不申明的情况下不输出对应的键

到底发生了什么?

类型为可选的boolean时,默认值为false

回答

8

转到文档并阅读相关内容。如果您希望布尔值未定义,则使用默认值使其未定义。

const props = withDefaults(defineProps<Props>(), {
  prop: undefined,

})
3

基于withDefaults实现当然是可以的,但是我并不想通过上述动机申明,我认为可选的boolean类型应该和可选的number类型或者string类型有一样的外观,而不是直接输出false @modelair

2

我了解文档中的申明,我想表达的是为何针对boolean需要有一个额外的逻辑,而不是未定义的行为,我觉得这样会给一个额外的理解负担 在实现的时候是因为什么限制或者其他考虑因素?