一次解决TS类型警告的傻X经过

故事是这样开始的,有个需求是需要一个时间选择控件,提供额外的清理控件中内容的按钮。

<template>
  <a-space direction="vertical" :size="12">
    <a-date-picker v-model:value="value1" />
  </a-space>
  <a-button @click="clearDate">清除时间</a-button>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import type { Dayjs } from 'dayjs';
import dayjs from 'dayjs';
const value1 =  ref<Dayjs>()
const clearDate = () => {
  value1.value = ''
  // value1.value = null
  // value1.value = dayjs()
}
</script>

代码功能上是正常的,但赋值时会出现TS类型检测的告警,这张图有考点,最后有答案。

在这里插入图片描述

尝试了几种方式均无法解决问题

  • value1.value = ‘’

    警告

  • value1.value = null

    警告

  • value1.value = dayjs()

    会去当前时间,不满足需求

搜索了半天发现大家都没有遇到这个问题,奇怪。

dayjs的issue中也没发现蛛丝马迹,奇怪。

突然想到,antd的这个组件不是有个allowClear属性,不就是干这个的吗?那应该是支持的。

于是在antd中来回翻滚,终于在generateSinglePicker.tsx文件中找到了如下代码:

const DatePicker = getPicker(undefined, 'ADatePicker');
const WeekPicker = getPicker('week', 'AWeekPicker');
const MonthPicker = getPicker('month', 'AMonthPicker');
const YearPicker = getPicker('year', 'AYearPicker');
const TimePicker = getPicker('time', 'TimePicker'); // 给独立组件 TimePicker 使用,此处名称不用更改
const QuarterPicker = getPicker('quarter', 'AQuarterPicker');

这不就是给dayjs赋各种类型的值吗?这个undefined看起来十分可以。

于是,尝试为其赋值undefined。于是,世界都清爽了。

回过头看,之前的截图:

在这里插入图片描述

这他妈不是清楚的写着接收undefined吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值