json-roundtrip
v1.0.4
Published
This library provides a type-safe implementation of safely cloning values using `JSON.parse` and `JSON.stringify`.
Downloads
70
Readme
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);
// ...
}