declare function forEach( arr: O, callback: (this: This | void, value: O[number], index: number, array: O) => void, thisArg?: This, ): void; declare function forEach, This = undefined>( arr: O, callback: (this: This | void, value: O[number], index: number, array: O) => void, thisArg?: This, ): void; declare function forEach( obj: O, callback: (this: This | void, value: O[keyof O], key: keyof O, obj: O) => void, thisArg?: This, ): void; declare function forEach( str: O, callback: (this: This | void, value: O[number], index: number, str: O) => void, thisArg: This, ): void; export = forEach; declare function forEachInternal void, This = undefined>( value: O, callback: C, thisArg?: This, ): void; declare namespace forEach { export type _internal = typeof forEachInternal; }