typescript - 将数组作为参数应用到 Date 构造函数
问题描述
我正在尝试Date
从 a构造string[]
具有可变数量元素的 a - 有时是 3,有时是 6。但是,以下 Typescript 代码无法编译:
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, 1, 2001]
然后,告诉 TypeScript 你刚刚告诉我们的内容——你的列表不仅仅是任何数字列表 ( number[]
),而是恰好包含 3 个或更多项目的列表。
type Sequence<T> = [T, T, T, ...T[]];
const parts: Sequence<number> = [1, 1, 2001];
您需要做的就是创建一个new Date
.
const dte = new Date(...parts);
推荐阅读
- python - Python:CSV 中的 Unix 时间戳到日期转换
- tensorflow2.0 - 有没有办法保存 tensorflow 密集特征对象并稍后加载它
- algorithm - 有人可以检查我是否确定正确的运行时间吗?
- rust - Rust 中 Python zip 的最有效实现,用于未知长度的迭代器(Iterator
- >) 在编译时
- javascript - Safari 13.1.1 及更高版本的“beforeunload”功能未在浏览器窗口关闭时被调用
- javascript - 如何使用产品名称获取数组变量中的所有属性值?
- laravel-backpack - 如何在 laravel 背包中显示上传的文件?
- android - 有没有办法在 DatePicker 中隐藏最高年份选择器?
- javascript - Babel/Webpack 转译 JS 错误“对象不支持属性或方法‘最近的’”
- python-3.x - 当 CSV 内容读取为列表时,pandas read_csv() 返回具有 .1 和 .2 的重复条目