object.ts

view source

Declarations
#

9 declarations

EMPTY_OBJECT
#

object.ts view source

Record<string | number | symbol, undefined> & object import {EMPTY_OBJECT} from '@fuzdev/fuz_util/object.js';

Frozen empty object with no properties, good for options default values.

is_plain_object
#

object.ts view source

(value: any): boolean import {is_plain_object} from '@fuzdev/fuz_util/object.js';

Returns a boolean indicating if value is a plain object, possibly created with Object.create(null). But warning! This fails for some obscure corner cases, use a proper library for weird things.

value

type any

returns

boolean

map_record
#

object.ts view source

<T, K extends string | number, U>(obj: Record<K, T>, mapper: (value: T, key: string) => U): Record<K, U> import {map_record} from '@fuzdev/fuz_util/object.js';

Iterated keys in for..in are always returned as strings, so to prevent usage errors the key type of mapper is always a string. Symbols are not enumerable as keys, so they're excluded.

obj

type Record<K, T>

mapper

type (value: T, key: string) => U

returns

Record<K, U>

generics

map_record<T, K extends string | number, U>
T
K
constraint string | number
U

omit
#

object.ts view source

<T extends Record<K, any>, K extends keyof T>(obj: T, keys: K[]): OmitStrict<T, K> import {omit} from '@fuzdev/fuz_util/object.js';

Creates a new object without the specified keys.

obj

type T

keys

type K[]

returns

OmitStrict<T, K>

generics

omit<T extends Record<K, any>, K extends keyof T>
T
constraint Record<K, any>
K
constraint keyof T

omit_undefined
#

object.ts view source

<T extends Record<string | number, any>>(obj: T): T import {omit_undefined} from '@fuzdev/fuz_util/object.js';

A commonly used form of pick_by.

obj

type T

returns

T

obj with all undefined properties removed

generics

omit_undefined<T extends Record<string | number, any>>
T
constraint Record<string | number, any>

see also

pick_by
#

object.ts view source

<T extends Record<K, any>, K extends string | number>(obj: T, should_pick: (value: any, key: K) => boolean): Partial<T> import {pick_by} from '@fuzdev/fuz_util/object.js';

Creates a new object with properties that pass the should_pick predicate.

obj

type T

should_pick

type (value: any, key: K) => boolean

returns

Partial<T>

generics

pick_by<T extends Record<K, any>, K extends string | number>
T
constraint Record<K, any>
K
constraint string | number

reorder
#

object.ts view source

<T extends Record<K, any>, K extends string | number>(obj: T, keys: K[]): T import {reorder} from '@fuzdev/fuz_util/object.js';

A more explicit form of {put_this_first: obj.put_this_first, ...obj}.

obj

type T

keys

type K[]

returns

T

generics

reorder<T extends Record<K, any>, K extends string | number>
T
constraint Record<K, any>
K
constraint string | number

transform_empty_object_to_undefined
#

object.ts view source

<T>(obj: T): T | undefined import {transform_empty_object_to_undefined} from '@fuzdev/fuz_util/object.js';

obj

type T

returns

T | undefined

generics

transform_empty_object_to_undefined<T>
T

traverse
#

object.ts view source

(obj: any, cb: (key: string, value: any, obj: any) => void): void import {traverse} from '@fuzdev/fuz_util/object.js';

Performs a depth-first traversal of an object's enumerable properties, calling cb for every key and value with the current obj context.

obj

type any

cb

receives the key, value, and obj for every enumerable property on obj and its descendents

type (key: string, value: any, obj: any) => void

returns

void

Depends on
#

Imported by
#