TypeScript 中 toLocaleDateString 无法正常使用该如何解决?
问题根因
你代码的报错核心是调用顺序错误:valueOf() 方法会返回 number 类型的Unix时间戳,该类型本身不存在 toLocaleDateString 方法——这个问题和TypeScript兼容性无关,即使在原生JavaScript中运行也会抛出异常。
解决方案
- 方案1:直接获取数值型日期(推荐)
你需要的当月日期天数可以直接通过Date实例的getDate()方法获取,本身就是number类型,不需要额外转换:
const currentDay: number = today.getDate()
- 方案2:必须使用
toLocaleDateString的场景(如有特殊本地化格式要求)
调整调用顺序,先在Date实例上调用toLocaleDateString,再转换为数值类型即可:
// 先构造Date实例 const currentDate = new Date(today.getFullYear(), today.getMonth(), today.getDate()) // 调用toLocaleDateString获取字符串格式的日期 const dayStr = currentDate.toLocaleDateString('en-US', { day: 'numeric' }) // 转成数值类型 const currentDay: number = Number(dayStr)
类型兼容补充
如果仍出现TypeScript类型报错,可以通过类型断言明确变量类型即可:
const dayStr = (currentDate as Date).toLocaleDateString('en-US', { day: 'numeric' })
内容的提问来源于stack exchange,提问作者Richardson
相关产品推荐
相关产品推荐

