// Type definitions for set-value 4.0 // Project: https://github.com/jonschlinkert/set-value // Definitions by: Daniel Rosenwasser // Piotr Błażejewicz // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export = set; // Technically, everything will fall to the last overload, // but the first one can be useful for signature help. /** * @param object The object to set `value` on * @param path The of the property to set. * @param value The value to set on `object[prop]` * @param [options] */ declare function set(object: T, path: K, value: T[K], options?: set.Options): void; declare function set(object: object, path: set.InputType, value: any, options?: set.Options): void; declare namespace set { interface Options { /** * Do not split properties that include a `/`. * By default, set-value assumes that properties with a `/` are not intended to be split. * This option allows you to disable default behavior. * Note that this option cannot be used if `options.separator` is set to `/`. * @default true */ preservePaths?: boolean | undefined; /** * Custom separator to use for splitting object paths. * @default `.` */ separator?: string | undefined; /** * Custom `.split()` function to use. */ split?: SplitFunc | undefined; /** * Allows you to update plain object values, instead of overwriting them. * @default `undefined` */ merge?: boolean | MergeFunc | undefined; } type InputType = string | symbol | ReadonlyArray; type MergeFunc = (object: TObject, source: TSource) => TObject & TSource; type SplitFunc = (input: string, options?: Options) => string; }