timtonk / decode-ts

TypeScript compatible value decoding.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

decode-ts

TypeScript compatible value decoding.

  • io-ts is used to perform IO validation for type safety.
  • fp-ts is used for its Either type.

This is mostly a wrapper around the terrific io-ts to add a call to JSON.parse. You could achieve something similar with an io-ts type, however there is no way to propoagate the JSON parsing errors, hence the need for the wrapper.

Installation

yarn add decode-ts

Example

import * as t from 'io-ts';

import { jsonDecodeString, reportJsonDecodeError } from './index';

const Person = t.interface({
    id: t.string,
    age: t.number,
});

const log = (val: any) => console.log(JSON.stringify(val));

log(jsonDecodeString(Person)('foo')); // Left ParsingError
log(jsonDecodeString(Person)('{ "id": 1 }')); // Left ValidationErrors
log(jsonDecodeString(Person)('{ "id": "foo", "age": 5 }')); // Right { id: 'foo', age: 5 }

// Use the reporter for friendly error messages:

log(reportJsonDecodeError(jsonDecodeString(Person)('foo')));
// ["Unexpected token o in JSON at position 1"]
log(reportJsonDecodeError(jsonDecodeString(Person)('{ "id": 1 }')));
// ["Expecting string at id but instead got: 1.","Expecting number at age but instead got: undefined."]

Development

yarn
yarn compile
yarn lint

About

TypeScript compatible value decoding.


Languages

Language:TypeScript 100.0%