Luxon配合TypeScript使用报TS2339:类型'DateTime'不存在属性'c'如何解决?
问题原因
c属于Luxon的内部私有属性,是库的实现层面临时结构,不属于官方公开的API约定,不同版本可能发生修改甚至删除,因此@types/luxon没有在DateTime类型中声明该属性,触发TS类型报错。
解决方案
优先推荐使用官方公开的稳定API获取属性,DateTime实例已公开hour等时间属性,类型定义已包含相关声明,修改后代码如下:
import { DateTime as Luxon } from 'luxon'; const getCurrentHour = (): number => { const dTime = Luxon.now(); // 直接调用公开API即可获取小时,无需访问内部c属性 return dTime.hour; }
如果确实有特殊场景必须访问内部属性,可使用类型断言临时绕过校验,该方式不推荐,内部属性变更会直接导致运行时报错:
// 方式1:断言为any临时绕过 return (dTime as any).c.hour; // 方式2:临时扩展DateTime类型(仅适合临时使用) interface CustomDateTime extends Luxon { c: { hour: number; // 按需补充其他c属性下需要用到的字段 } } return (dTime as CustomDateTime).c.hour;
内容的提问来源于stack exchange,提问作者Arthur Borba
相关产品推荐
相关产品推荐

