我正在尝试从具有可变数量元素的 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/