在 TypeScript (3.6.3) Generator<>中几乎与IterableIterator<>相同。当Generator<>扩展Iterator<> 时,它默认第三个泛型参数(TNext)为unknown。Iterator<>本身默认TNext为undefined。所以Generator和Iterator(以及IterableIterator)并没有像他们应该的那样排列。
let gen2:IterableIterator<string>;
function* gen1():Generator<string> {
yield* gen2;
}
Run Code Online (Sandbox Code Playgroud)
yield* 行是一个错误:“无法将迭代委托给 value,因为其迭代器的 'next' 方法期望类型为 'undefined',但包含的生成器将始终发送 'unknown'.ts(2766)”。
我错过了什么吗?这有充分的理由吗?