json-roundtrip
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

json-roundtrip

This library provides a type-safe implementation of safely cloning values using JSON.parse and JSON.stringify.

import { jsonRoundtrip } from 'json-roundtrip';

const value1 = jsonRoundtrip({ a: 1 });
const value2 = jsonRoundtrip('Hello, world');

// @ts-expect-error
const error1 = jsonRoundtrip({ a: 5, double: n => n * 2 });

// @ts-expect-error
const error2 = jsonRoundtrip({ [Symbol('foo')]: 'bar' });

json-roundtrip exports a JsonCompatible type that can be used to typecheck values:

import { jsonRoundtrip, JsonCompatible } from 'json-roundtrip';

const myValue: JsonCompatible = {
	a: 1,
	b: 'Hello, world',
	c: null,
	d: [1, 2, 'three'],
	e: {
		f: true,
		g: 0.5,
	},
};

jsonRoundtrip(myValue);

Note that interface values are not supported as they may have additional unserializable properties:

interface MyProps {
	a: number;
	b: string;
}

function MyComponent(props: MyProps) {
	// @ts-expect-error
	const copiedProps = jsonRoundtrip(props);

	// ...
}

Instead, use type to define the shape of the value:

type MyProps = {
	a: number;
	b: string;
};

function MyComponent(props: MyProps) {
	const copiedProps = jsonRoundtrip(props);

	// ...
}

Readme

Keywords

Package Sidebar

Install

npm i json-roundtrip

Weekly Downloads

0

Version

1.0.3

License

CC0-1.0

Unpacked Size

10.3 kB

Total Files

7

Last publish

Collaborators

  • printfn