type R = IsNotObject<object> // true
type R = IsObject<{}> // true
type R = IsObject<{ a: 1 }> // true
type R = IsObject<Function> // true
type R = IsObject<never> // false
type R = IsObject<unknown> // false
type R = IsObject<number> // false
type R = IsObject<{} | bigint> // boolean
🔢 customize
Filter to ensure T is an object or object literals, otherwise returns never.
type R = IsObject<{}, { selection: 'filter' }> // {}
type R = IsObject<{ a: 1 }, { selection: 'filter' }> // { a: 1 }
type R = IsObject<Function, { selection: 'filter' }> // Function
type R = IsObject<never, { selection: 'filter' }> // never
type R = IsObject<unknown, { selection: 'filter' }> // never
type R = IsObject<{} | bigint> // {}
🔢 customize:
Validate if T is exactly object.
type R = IsObject<object, { exact: true }> // true
type R = IsObject<{}, { exact: true }> // false
🔢 customize:
Disable distribution of union types.
type R = IsObject<{} | 1> // boolean
type R = IsObject<{} | 1, { distributive: false }> // false
🔢 customize
Use unique branch identifiers to allow precise processing of the result.
🎭 predicate
Validate if
Tis anobjector object literals.Note that
Function,Array, and tuple are also objects.