首页 > 解决方案 > 如何使用打字稿写日期?

问题描述

如何使用打字稿写日期?

我在选择器中选择了一个日期,并尝试在状态中写入它,但出现错误,如何正确执行?

const [dateFrom, setDateFrom] = useState<Date | null>(new Date());

onChange={(e, v) => {
  setDateFrom(v);
}}

ype '(e: Date | null, v: Date | null) => void' 不能分配给类型 '(date: Date | null, value?: string | null | undefined) => void'。参数 'v' 和 'value' 的类型不兼容。键入'字符串 | 空 | undefined' 不可分配给类型 'Date | 无效的'。类型“未定义”不可分配给类型“日期 | 无效的'。

标签: reactjstypescript

解决方案


该错误告诉您您没有对值进行适当的检查:

键入'字符串 | 空 | undefined' 不可分配给类型 'Date | 无效的'。类型“未定义”不可分配给类型“日期 | 无效的'。

v 可能是string, nullundefined并且您将它分配给一个变量Datenull。它们不是兼容的类型。

如果 v 是字符串,您应该强制转换创建日期,否则分配 null

onChange={(e, v) => {
 setDateFrom(typeof v === 'string' ? new Date(v) : null);
}}

推荐阅读