UNPKG

io-ts-types

Version:

A collection of codecs and combinators for use with io-ts

22 lines (21 loc) 614 B
/** * @since 0.5.0 */ import * as t from 'io-ts'; import { pipe } from 'fp-ts/es6/pipeable'; import { chain } from 'fp-ts/es6/Either'; /** * @example * import { NumberFromString } from 'io-ts-types/es6/NumberFromString' * * NumberFromString.decode('1') // right(1) * NumberFromString.decode('1.1') // right(1.1) * * @since 0.5.0 */ export var NumberFromString = new t.Type('NumberFromString', t.number.is, function (u, c) { return pipe(t.string.validate(u, c), chain(function (s) { var n = +s; return isNaN(n) || s.trim() === '' ? t.failure(u, c) : t.success(n); })); }, String);