( obj: T, cb: (item: V, key: K) => void )
| 44 | } |
| 45 | |
| 46 | export function forEach<T extends object, K extends Extract<keyof T, string>, V extends T[K]>( |
| 47 | obj: T, |
| 48 | cb: (item: V, key: K) => void |
| 49 | ) { |
| 50 | for (const key in obj) { |
| 51 | if (obj.hasOwnProperty(key)) { |
| 52 | cb(obj[key as K] as V, key as K); |
| 53 | } |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | export function forEachArray<T>( |
| 58 | arr: Array<T> | ArrayLike<T>, |