get-value
Version:
Use property paths like 'a.b.c' to get a nested value from an object. Even works when keys have dots in them (no other dot-prop library we tested does this, or does it correctly).
48 lines (45 loc) • 1.55 kB
TypeScript
export = get;
declare function get<T>(obj: T): T;
declare function get(obj: object, key: string | string[], options?: get.Options): any;
declare namespace get {
interface Options {
/**
* The default value to return when get-value cannot result a value from the given object.
*
* default: `undefined`
*/
default?: any;
/**
* If defined, this function is called on each resolved value.
* Useful if you want to do `.hasOwnProperty` or `Object.prototype.propertyIsEnumerable`.
*/
isValid?: (<K extends string>(key: K, object: Record<K, any>) => boolean) | undefined;
/**
* Custom function to use for splitting the string into object path segments.
*
* default: `String.split`
*/
split?: ((s: string) => string[]) | undefined;
/**
* The separator to use for spliting the string.
* (this is probably not needed when `options.split` is used).
*
* default: `"."`
*/
separator?: string | RegExp | undefined;
/**
* Customize how the object path is created when iterating over path segments.
*
* default: `Array.join`
*/
join?: ((segs: string[]) => string) | undefined;
/**
* The character to use when re-joining the string to check for keys
* with dots in them (this is probably not needed when `options.join` is used).
* This can be a different value than the separator, since the separator can be a string or regex.
*
* default: `"."`
*/
joinChar?: string | undefined;
}
}