diff --git a/src/maybe/maybe.interface.ts b/src/maybe/maybe.interface.ts index 687f75d..23f1ef2 100644 --- a/src/maybe/maybe.interface.ts +++ b/src/maybe/maybe.interface.ts @@ -76,7 +76,7 @@ export interface IMaybe extends IMonad { /** * Map output of non-empty data to a new value */ - map(f: (t: T) => R): IMaybe + map(f: (t: T) => NonNullable): IMaybe /** * Returns true if value is not empty diff --git a/src/maybe/maybe.spec.ts b/src/maybe/maybe.spec.ts index c373188..3627c73 100644 --- a/src/maybe/maybe.spec.ts +++ b/src/maybe/maybe.spec.ts @@ -199,14 +199,15 @@ describe('Maybe', () => { const maybeNotSomeSome2 = maybe(sut) .map(_str => getUserService(0)) .valueOr('fallback') + const maybeNotSomeSome3 = maybe(sut) - .map(_str => getUserService('')) + .map(_str => 'sut') .valueOr('fallback') expect(maybeSomeString).toEqual('initial input mapped') expect(maybeNotSomeSomeString).toEqual('fallback') expect(maybeNotSomeSome2).toEqual(0) - expect(maybeNotSomeSome3).toEqual('') + expect(maybeNotSomeSome3).toEqual('sut') }) it('should handle undefined input', () => { diff --git a/src/maybe/maybe.ts b/src/maybe/maybe.ts index 03e68ab..0eb4ffe 100644 --- a/src/maybe/maybe.ts +++ b/src/maybe/maybe.ts @@ -74,7 +74,7 @@ export class Maybe implements IMaybe { : [this.value as NonNullable] } - public map(fn: (t: NonNullable) => R): IMaybe { + public map(fn: (t: NonNullable) => NonNullable): IMaybe { return this.isSome() ? new Maybe(fn(this.value as NonNullable)) : new Maybe() @@ -98,7 +98,7 @@ export class Maybe implements IMaybe { : new Maybe() } - public apply(fab: IMaybe<(v: T) => R>): IMaybe { + public apply(fab: IMaybe<(v: T) => NonNullable>): IMaybe { return this.flatMap(b => fab.map(fn => fn(b))) } }