type-fest/test-d/jsonifiable.ts
John Sullivan e11ab807e7
Add Jsonifiable type (#492)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
2022-11-05 15:39:22 +07:00

31 lines
957 B
TypeScript

import {expectAssignable, expectNotAssignable} from 'tsd';
import type {Jsonifiable} from '..';
expectAssignable<Jsonifiable>(1);
expectAssignable<Jsonifiable>('');
expectAssignable<Jsonifiable>(null);
expectAssignable<Jsonifiable>(new Date());
expectAssignable<Jsonifiable>({a: new Date()});
expectAssignable<Jsonifiable>([new Date()]);
expectAssignable<Jsonifiable>({a: undefined});
expectAssignable<Jsonifiable>([1, 2, 3] as const);
expectAssignable<Jsonifiable>({a: new Date()} as const);
expectAssignable<Jsonifiable>({a: {deeply: {nested: {toJsonObject: new Date()}}}});
expectAssignable<Jsonifiable>({toJSON: () => new Date()});
expectAssignable<Jsonifiable>({
toJSON() {
return {
foo: {
toJSON() {
return {bar: 'bar'};
},
},
};
},
});
expectNotAssignable<Jsonifiable>(undefined);
expectNotAssignable<Jsonifiable>(new Map());
expectNotAssignable<Jsonifiable>({a: new Map()});
expectNotAssignable<Jsonifiable>([new Map()]);