Sha256: 86b484bcf6344a27a9ee19dd5cef1a5afbbd96aeb07708cc6d8b43d7dfa8466c

Contents?: true

Size: 1.47 KB

Versions: 28

Compression:

Stored size: 1.47 KB

Contents

declare const emptyObjectSymbol: unique symbol;

/**
Represents a strictly empty plain object, the `{}` value.

When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).

@example
```
import type {EmptyObject} from 'type-fest';

// The following illustrates the problem with `{}`.
const foo1: {} = {}; // Pass
const foo2: {} = []; // Pass
const foo3: {} = 42; // Pass
const foo4: {} = {a: 1}; // Pass

// With `EmptyObject` only the first case is valid.
const bar1: EmptyObject = {}; // Pass
const bar2: EmptyObject = 42; // Fail
const bar3: EmptyObject = []; // Fail
const bar4: EmptyObject = {a: 1}; // Fail
```

Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.

@category Object
*/
export type EmptyObject = {[emptyObjectSymbol]?: never};

/**
Returns a `boolean` for whether the type is strictly equal to an empty plain object, the `{}` value.

@example
```
import type {IsEmptyObject} from 'type-fest';

type Pass = IsEmptyObject<{}>; //=> true
type Fail = IsEmptyObject<[]>; //=> false
type Fail = IsEmptyObject<null>; //=> false
```

@see EmptyObject
@category Object
*/
export type IsEmptyObject<T> = T extends EmptyObject ? true : false;

Version data entries

28 entries across 28 versions & 2 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.25 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.24 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.23 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.22 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.21 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.20 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.19 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.18 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.17 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.16 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.15 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.14 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.13 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.12 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.11 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.10 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.9 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.8 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts
clapton-0.0.7 lib/clapton/javascripts/node_modules/type-fest/source/empty-object.d.ts