迭代器和扩展运算符的typescript选项



我想调用下面类型的迭代器

type datetimeT = { [key: number]: string };

如果以这种方式创建对象

let example: dateTimeT = {1: 'A', 2: 'B'};

无法识别排列运算符...example,因为该类型没有[Symbol.iterator]()方法

我的ts选项是

"target": "es6",
"module": "esnext",
"lib": [
"dom",
"dom.iterable",
"esnext",
"es2017"
]

我该怎么办?

对象在Javascript中是不可自动迭代的,它与TSConfig无关。每个想要可迭代的类型都必须实现一个迭代器方法:

type MyIterType = {
[key: number]: string
} & Iterable<string>
const foo: MyIterType = {
0: 'a',
1: 'b',
*[Symbol.iterator] () {
const values = Object.values(this)
while (values.length) {
yield values.pop()
}
}
}
const arr = [...foo] // ['b', 'a']

游乐场链接

最新更新