Dayjs对象的TypeScript类型是什么?Ant Design日期选择器类型适配
正确的TypeScript类型定义方案
你需要使用Dayjs官方导出的Dayjs类型,结合null来定义状态类型,具体操作如下:
- 先确保正确导入Dayjs及其类型:
import dayjs, { Dayjs } from 'dayjs';
- 修改状态的类型声明:
const [now, setNow] = useState<Dayjs | null>(null);
为什么null | typeof dayjs()不生效?
typeof dayjs()返回的是宽泛的object类型,无法识别Dayjs实例特有的方法(比如format()、add())和属性,TypeScript无法提供准确的类型提示与校验。而官方导出的Dayjs是专门为Dayjs实例设计的接口,能完整覆盖实例的类型信息。
适配Ant Design DatePicker的补充说明
如果是在Ant Design的DatePicker组件中使用该状态,组件的受控值类型本身就是Dayjs | null,两者类型完全匹配,不会出现类型不兼容的问题。
修改后的完整示例代码:
import { useState } from 'react'; import dayjs, { Dayjs } from 'dayjs'; function Demo() { const [now, setNow] = useState<Dayjs | null>(null); return ( <div> <p>{now ? now.format('YYYY-MM-DD HH:mm:ss') : 'null'}</p> <button onClick={() => setNow(dayjs())}>Update Time</button> </div> ); }
内容的提问来源于stack exchange,提问作者user20002028
相关产品推荐
相关产品推荐

