Added 'get-value'.

This commit is contained in:
Daniel Rosenwasser
2018-02-17 01:16:48 -08:00
parent 423ace8fe7
commit c448d9b017
4 changed files with 99 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
import get = require("get-value");
const obj = { a: { b: { c: { d: "foo" } } } };
get(obj);
get(obj, "a");
get(obj, "a.b");
get(obj, "a.b.c");
get(obj, "a.b.c.d");
{
const isEnumerable = Object.prototype.propertyIsEnumerable;
const options: get.Options = {
isValid: (key, obj) => isEnumerable.call(obj, key) || typeof obj[key] === "string",
};
const obj = {};
Object.defineProperty(obj, 'foo', { value: 'bar', enumerable: false });
get(obj, 'foo', options);
get({}, 'hasOwnProperty', options);
get({}, 'constructor', options);
}

53
types/get-value/index.d.ts vendored Normal file
View File

@@ -0,0 +1,53 @@
// Type definitions for get-value 3.0
// Project: https://github.com/jonschlinkert/get-value
// Definitions by: Daniel Rosenwasser <https://github.com/DanielRosenwasser>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.4
export = get;
declare function get<T>(obj: T): T;
declare function get(obj: object, key: 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;
/**
* Custom function to use for splitting the string into object path segments.
*
* default: `String.split`
*/
split?: (s: string) => string[];
/**
* The separator to use for spliting the string.
* (this is probably not needed when `options.split` is used).
*
* default: `"."`
*/
separator?: string | RegExp;
/**
* Customize how the object path is created when iterating over path segments.
*
* default: `Array.join`
*/
join?: (segs: string[]) => string;
/**
* 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;
}
}

View File

@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"get-value-tests.ts"
]
}

View File

@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }