我想调用下面类型的迭代器
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']
游乐场链接