type-fest/test-d/empty-object.ts
skarab42 f46b85af28
Add EmptyObject and IsEmptyObject types (#447)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
2022-08-29 14:24:53 +07:00

30 lines
721 B
TypeScript

import {expectAssignable, expectError, expectType} from 'tsd';
import type {EmptyObject, IsEmptyObject} from '../index';
declare let foo: EmptyObject;
expectAssignable<{}>(foo);
expectAssignable<{}>(foo = {});
expectError(foo = []);
expectError(foo = {x: 1});
expectError(foo = 42);
expectError(foo = null);
expectError(foo.bar = 42);
expectError(foo.bar = {});
expectType<IsEmptyObject<{}>>(true);
expectType<IsEmptyObject<typeof foo>>(true);
expectType<IsEmptyObject<[]>>(false);
expectType<IsEmptyObject<null>>(false);
expectType<IsEmptyObject<() => void>>(false);
type Union = EmptyObject | {id: number};
const bar: Union = {};
expectError(bar.id);
const baz: Union = {id: 42};
expectType<{id: number}>(baz);