Skip to content

TomHeinemeyer/isobject-ts

Repository files navigation

isobject-ts NPM version NPM monthly downloads NPM total downloads

Return true, if a given value is an object. Uses a type predicate for Typescript users to return additional type information. The type returned is Record<string | number | symbol, unknown>.

Install

Install using npm:

$ npm install --save isobject-ts

Usage

import isObject from "isobject-ts"

All of the following return true:

isObject({})
isObject(Object.create({}))
isObject(Object.create(Object.prototype))
isObject(Object.create(null))
isObject({})
isObject(new Foo())
isObject(/foo/)

All of the following return false:

isObject(function () {})
isObject(1)
isObject([])
isObject(undefined)
isObject(null)

You can use the type information like this:

const foo(bar: unknown) => {
    if(!isObject(bar)) return undefined
    /* Type is now inferred to be Record<string | number | symbol, unknown>, 
       so we can now check for keys we want to access */
    const hasBaz = 'baz' in bar
    if(!hasBaz) return undefined
    // We know that our key "baz" is in the object, so we can safely access it
    return bar.baz
}

Author

Tom Heinemeyer

License

Copyright © 2024, Tom Heinemeyer. Released under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published