Skip to content

Commit d7121d4

Browse files
fix(maybe): returns NonNullable root type (#31)
1 parent 514354a commit d7121d4

File tree

4 files changed

+32
-46
lines changed

4 files changed

+32
-46
lines changed

package-lock.json

Lines changed: 20 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@
3030
"pkgRoot": "dist"
3131
},
3232
"devDependencies": {
33-
"@types/jest": "^23.3.3",
34-
"@types/node": "^10.11.4",
33+
"@types/jest": "^23.3.4",
34+
"@types/node": "^10.11.5",
3535
"codecov": "^3.1.0",
3636
"jest": "23.6.0",
3737
"jest-junit": "^5.2.0",
38-
"rollup": "^0.66.4",
38+
"rollup": "^0.66.5",
3939
"semantic-release": "^15.9.17",
4040
"ts-jest": "23.10.4",
4141
"ts-node": "^7.0.1",
4242
"tslint": "^5.11.0",
43-
"tslint-immutable": "^4.7.0",
43+
"tslint-immutable": "^4.8.0",
4444
"typescript": "^3.1.1",
4545
"uglify-js": "^3.4.9"
4646
},

src/interfaces/maybe.interface.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ export interface IMaybe<T> extends IMonad<T> {
2222
/**
2323
* Unwrap a Maybe with a default value
2424
*/
25-
valueOr(val: NonNullable<T>): NonNullable<T>
25+
valueOr(val: NonNullable<T>): T
2626

2727
/**
2828
* Unwrap a Maybe with a default computed value
2929
*/
30-
valueOrCompute(f: () => NonNullable<T>): NonNullable<T>
30+
valueOrCompute(f: () => NonNullable<T>): T
3131

3232
/**
3333
* Execute functions with side-effects.
@@ -42,7 +42,7 @@ export interface IMaybe<T> extends IMonad<T> {
4242
/**
4343
* Execute a function with side-effects when maybe is a some.
4444
*/
45-
tapSome(f: (val: NonNullable<T>) => void): void
45+
tapSome(f: (val: T) => void): void
4646

4747
/**
4848
* Unwrap and apply MaybePattern functions
@@ -52,12 +52,12 @@ export interface IMaybe<T> extends IMonad<T> {
5252
/**
5353
* Combine multiple maybe
5454
*/
55-
map<R>(f: (t: NonNullable<T>) => R): IMaybe<R>
55+
map<R>(f: (t: T) => R): IMaybe<R>
5656

5757
/**
5858
* Combine multiple maybe
5959
*/
60-
flatMap<R>(f: (t: NonNullable<T>) => IMaybe<R>): IMaybe<R>
60+
flatMap<R>(f: (t: T) => IMaybe<R>): IMaybe<R>
6161

6262
// tslint:disable-next-line:readonly-array
6363
of(x?: T, ...args: any[]): IMaybe<T>

src/monads/maybe.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { IMaybe, IMaybePattern } from "../interfaces"
22

3-
export function maybe<T>(value?: T): IMaybe<T> {
3+
export function maybe<T>(value?: T): IMaybe<NonNullable<T>> {
44
return {
5-
of: (x) => maybe(x),
5+
of: maybe,
66
valueOr: (val: NonNullable<T>) => value === null || value === undefined ? val : value as NonNullable<T>,
77
valueOrCompute: (f: () => NonNullable<T>) => value === null || value === undefined ? f() : value as NonNullable<T>,
88
tap: (obj: Partial<IMaybePattern<T, void>>) => value === null || value === undefined ? obj.none && obj.none() : obj.some && obj.some(value as NonNullable<T>),
@@ -12,4 +12,4 @@ export function maybe<T>(value?: T): IMaybe<T> {
1212
map: <R>(f: (t: NonNullable<T>) => R) => value === null || value === undefined ? maybe<R>() : maybe<R>(f(value as NonNullable<T>)),
1313
flatMap: <R>(f: (d: NonNullable<T>) => IMaybe<R>) => value === null || value === undefined ? maybe<R>() : f(value as NonNullable<T>)
1414
}
15-
}
15+
}

0 commit comments

Comments
 (0)