作者:皮蓬 | 来源:互联网 | 2022-11-25 13:09
我试图建立一个Date
从一个string[]
与元件的可变数量-有时3,有时6.然而,下面的代码打字稿编译失败:
const parts = ['1', '1', '2001'];
const dte = Date.apply(undefined, parts) as Date;
有:
'string []'类型的参数不能分配给'[]'类型的参数.ts(2345)
据推测,编译器正在尝试Date
没有参数的构造函数,这是我不想要的.但即使数组是number[]
,编译器似乎找不到正确的重载:
const parts1 = parts.map(x => parseInt(x,10));
dte = Date.apply(undefined, parts1) as Date;
我该如何解决这个问题?
更具体地说,如何Date
使用值数组作为构造函数的参数创建?
1> Karol Majews..:
首先,确保使用数字而不是字符串.这就是类型签名所说的.
[1, 1, 2001]
然后,告诉TypeScript您刚刚告诉我们的内容 - 您的列表不仅仅是任何数字列表(number[]
),而是精确列出3个或更多项目的列表.
type Sequence = [T, T, T, ...T[]];
const parts: Sequence = [1, 1, 2001];
你需要做的就是创建一个new Date
.
const dte = new Date(...parts);