如何在不使用任何[]的情况下为对象数组创建类型定义?

问题描述 投票:0回答:1

我正在使用

date-fns
库使用
eachMonthOfInterval
函数获取几个日期值之间的月份,如下所示:

const startingMonth = "2024-10-01 00:00:00";
const endingMonth = "2024-12-01 00:00:00";
const allMonths: any[] = eachMonthOfInterval(
  {
    start: startingMonth,
    end: endingMonth,
  },
  {
    in: tz("Asia/Calcutta"),
  }
);
console.log(allMonths);
console.log(allMonths[0].internal);

我正在使用库

tz
中的
"@date-fns/tz"
函数来指定我想要结果的时区(在本例中为“亚洲/加尔各答”)。

以下是我得到的

console.log
The list of months between startingMonth and endingMonth

安装了

any[]
,我尝试使用
TZDate
库中的
"@date-fns/tz"
类型,但是我在
internal
行中的属性
console.log(allMonths[0].internal)

下得到了这条红色的波浪线

Property 'internal' does not exist on type 'TZDate'.

当我将鼠标悬停在红色波浪线上时,它显示“‘TZDate’类型上不存在属性‘内部’。”

如何在不使用类型

allMonths
的情况下向常量
any
添加类型?

typescript date-fns
1个回答
0
投票

首先,您不需要注释数组 - 它将自动成为

TZDate[]
类型。其次,
internal
实际上意味着内部,因此它不包含在供公共使用的
TZDate
类型中,但在运行时存在。不过你可以用
any
破解它:

console.log((allMonths[0] as any).internal)
© www.soinside.com 2019 - 2024. All rights reserved.