typescript - 将数组作为参数应用于 Date 构造函数

标签 typescript

我正在尝试从具有可变数量元素的 string[] 构造一个 Date - 有时 3 个,有时 6 个。但是,以下 Typescript 代码失败编译:

const parts = ['1', '1', '2001'];
const dte = Date.apply(undefined, parts) as Date;

与:

Argument of type 'string[]' is not assignable to parameter of type '[]'.ts(2345)

大概编译器正在尝试不带参数的 Date 构造函数,这是我不想要的。但即使数组是 number[],编译器似乎也没有找到正确的重载:

const parts1 = parts.map(x => parseInt(x,10));
dte = Date.apply(undefined, parts1) as Date;

我该如何解决?

更具体地说,如何使用值数组作为构造函数的参数来创建Date

最佳答案

首先,确保使用数字而不是字符串。这就是类型签名所说的。

[1, 1, 2001]

然后,将您刚刚告诉我们的内容告诉 TypeScript — 您的列表不仅仅是任何数字列表 (number[]),而是恰好包含 3 个或更多项的列表。

type Sequence<T> = [T, T, T, ...T[]];

const parts: Sequence<number> = [1, 1, 2001];

您需要做的就是创建一个新日期

const dte = new Date(...parts);

关于typescript - 将数组作为参数应用于 Date 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53756056/

相关文章:

Javascript 对字符串数组的重要性进行排序

javascript - Vuejs 实现全局确认对话框功能时遇到的问题

javascript - 如何在React Native中全局重新定义FormData TypeScript接口(interface)?

javascript - screen.getByText 不是函数

typescript 模块语法

typescript - 以下是什么意思作为类型 : () => void = null

javascript - IE 11 的 Map(iterable) 替代方案

javascript - Object.estimated(类似 Date 对象)未处理为 Date() 类型

html - Angular,Azure.CreateBlobService 未读取传入的环境变量或值?

Angular 8在导航开始之前取消或做某事