updateIn<K, V, C>(collection: C,
keyPath: KeyPath<K>,
updater: (value: RetrievePath<C, Array<K>> | undefined) => unknown | undefined
): C
updateIn<K, V, C, NSV>(collection: C,
keyPath: KeyPath<K>,
notSetValue: NSV,
updater: (value: RetrievePath<C, Array<K>> | NSV) => unknown
): C
updateIn<TProps, C, K>(record: C,
keyPath: KeyPath<K>,
updater: (value: RetrievePath<C, Array<K>>) => unknown
): C
updateIn<TProps, C, K, NSV>(record: C,
keyPath: KeyPath<K>,
notSetValue: NSV,
updater: (value: RetrievePath<C, Array<K>> | NSV) => unknown
): C
updateIn<K, V, C>(collection: Array<V>,
keyPath: KeyPath<string | number>,
updater: (value: RetrievePath<C, Array<K>> | undefined) => unknown | undefined
): Array<V>
updateIn<K, V, C, NSV>(collection: Array<V>,
keyPath: KeyPath<K>,
notSetValue: NSV,
updater: (value: RetrievePath<C, Array<K>> | NSV) => unknown
): Array<V>
updateIn<K, C>(object: C,
keyPath: KeyPath<K>,
updater: (value: RetrievePath<C, Array<K>>) => unknown
): C
updateIn<K, C, NSV>(object: C,
keyPath: KeyPath<K>,
notSetValue: NSV,
updater: (value: RetrievePath<C, Array<K>> | NSV) => unknown
): C
updateIn<K, V, C>(collection: C,
keyPath: KeyPath<K>,
updater: (value: RetrievePath<C, Array<K>>) => unknown
): {[key: PropertyKey]: V}
updateIn<K, V, C, NSV>(collection: C,
keyPath: KeyPath<K>,
notSetValue: NSV,
updater: (value: RetrievePath<C, Array<K>> | NSV) => unknown
): {[key: PropertyKey]: V}