TS2707

Generic type 'Iterator<T, TReturn, TNext>' requires between 1 and 3 type arguments.

Broken Code ❌

class Counter implements Iterator {
  private counter = 0;
 
  public next(): { done: boolean; value: number } {
    return {
      done: false,
      value: this.counter++,
    };
  }
}

Fixed Code ✔️

You have to at least pass 1 type argument to the generic Iterator type:

class Counter implements Iterator<number> {
  private counter = 0;
 
  public next(): { done: boolean; value: number } {
    return {
      done: false,
      value: this.counter++,
    };
  }
}