0.1.6 ā€¢ Published 4 years ago

@safets/get v0.1.6

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

Get Util

npm.io npm.io npm.io npm.io npm.io

Designed special for TypeScript

Gets the value at path of object.

šŸ’” Inspired by lodash, but rethought and has awesome types.

Right pathWrong pathLanguage tipsJS specific path (string)Bundle size
@safets/getāž• return right typeāž• errorāž•/āž– with inline pathāž• unnecessary for TSāž• npm.io
lodash.getāž•/āž– return right type with array pathāž– return anyāž– not worked with arrayāž– has unnecessary for TS JS specific pathāž– npm.io

Installation

npm i -S @safets/get

Usage

Fullfilled object:

const obj = { a: [{ b: 3 as const }] };

// Inline
get(obj, "a", 0, "b"); // 3: 3 | undefined

// By array with default
get(obj, ["a", 0], "default"); // {b: 3}:  {b: 3} | 'default'

Unfilled object:

const partialObj = ({ a: [] } as any) as { a: [{ b: 3 }] };

// Inline
get(partialObj, "a", 0, "b"); // undefined: 3 | undefined

// By array with default
get(partialObj, ["a", 0], "default"); // 'default': 'default' | {b: 3}

Unfilled object with default value:

const partialObj = ({ a: [] } as any) as { a: [{ b: 3 }] };

// Inline
get("default")(partialObj, "a", 0); // 'default': string | {b: 3}

// With default null
getOrNull(partialObj, "a", 0, "b"); // null:  3 | null

Documentation

// Keys
type K = string | number | symbol;

Inline

get(object: O, ...path: K[], options?: {default: D}): O[K0]... | D;
  • āž• Conciseness
  • āž• Language tips work
  • āž– Verbose use of default value

By array

get(default: O)(object: any, ...path: K[]): O[K0]... | D;
  • āž• Simple use of default value
  • āž– Language tips don't work

From default value

Can be combined with any of the options:

  • Inline:

    get(default: D)(object: O, ...path: K[]): O[K0]... | D;
  • By array:

    get(default: D)(object: O, path: K[]): O[K0]... | D;

With default value null:

getOrNull(object: any, ...path: K[]);

Strict get

šŸš« not implemented

Strict version of get (better use it).

By object

šŸš« not implemented, āš ļø perhaps it makes no sense to implement

  • āž• Simple use of default value
  • āž– Language tips don't work

By function

šŸš« not implemented, āš ļø perhaps it makes no sense to implement

Error handling:

  • āž• Most concise
  • āž• Language tips work
  • āž• No maximum length limit
  • āž– Catch is very slow

šŸš« not implemented, āš ļø perhaps will remain experimental

Parsing function body:

  • āž• Most concise
  • āž• Language tips work
  • āž• No maximum length limit
  • āž• Fast
  • āž– Dangerous (not for production)

Proxy

šŸš« not implemented

  • āž• Most concise
  • āž• Language tips work
  • āž• No maximum length limit
  • āž• Fast
  • āž– Doesn't work on older browsers (IE11 and older)

Arguments

  1. object: any

    The object through which passes.

  2. path: (string | number | symbol) / Array<string | number | symbol>

    Listing object properties in depth.

    Limitations:

    • maximum depth: 20 (no limitation for "by function" and "proxy").
  3. defaultValue: any / options: {default: any}

    Default value.

    Don't pass undefined and null default value directly because they are cast to any.

    • Use get without default value for default undefined.
    • Use getOrNull without default value for default null.
0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago