This is the interface definition of createEnumerator:
createEnumerator<T>(initialize: () => void, tryGetNext: () => boolean, dispose: () => void): IEnumerator<T>;
It doesn't accept anything like "getCurrent: () => T", so how is it supposed to get actual values when enumerating?