В TypeScript (3.6.3) Generator <> практически идентичен IterableIterator <> . Когда Generator <> расширяет Iterator <> , по умолчанию используется третий общий аргумент (TNext) до unknown . Итератор <> сам по умолчанию TNext до undefined . Так что Generator и Iterator (и IterableIterator ) не выстраиваются в линию так, как могли бы.
let gen2:IterableIterator<string>;
function* gen1():Generator<string> {
yield* gen2;
}
Строка yield * содержит ошибку: «Невозможно делегировать итерацию значению, поскольку метод« next »ее итератора ожидает тип« undefined », но содержащийся генератор всегда будет отправлять« unknown ». Ts(2766) ".
Я что-то упустил? Есть ли для этого веская причина?