diff --git a/src/boolean/all.js b/src/boolean/all.js index f133295..443a8fa 100644 --- a/src/boolean/all.js +++ b/src/boolean/all.js @@ -1 +1,2 @@ export * as typeDefinition from './BooleanT.js' +export * as type from './type.js' diff --git a/src/number/__test__/type.spec.js b/src/number/__test__/type.spec.js index 9d05744..bd07690 100644 --- a/src/number/__test__/type.spec.js +++ b/src/number/__test__/type.spec.js @@ -4,7 +4,9 @@ import math from '#nanomath' describe('number type operations', () => { it('converts to number', () => { assert.strictEqual(math.number(2.637), 2.637) + assert(isNaN(math.number(NaN))) assert.strictEqual(math.number(true), 1) assert.strictEqual(math.number(false), 0) + assert.strictEqual(math.number(), 0) }) }) diff --git a/src/number/type.js b/src/number/type.js index b970b5e..b7656ba 100644 --- a/src/number/type.js +++ b/src/number/type.js @@ -3,5 +3,10 @@ import {BooleanT} from '#boolean/BooleanT.js' import {Returns} from '#core/Type.js' import {NumberT} from '#number/NumberT.js' +const num = f => Returns(NumberT, f) + export const number = plain(a => a) -number.also(BooleanT, Returns(NumberT, a => a ? 1 : 0)) +number.also( + BooleanT, num(a => a ? 1 : 0), + [], num(() => 0) +)