11interface ITry < A > {
22 ok : boolean ;
33
4- then < B = A > ( onsuccess : ( value : A ) => B | Try < B > ) : Try < B > ;
5- catch < B = never > ( onfailure : ( reason : unknown ) => B | Try < B > ) : Try < A | B > ;
4+ then < B = A > ( onsuccess : ( ( value : A ) => B | Try < B > ) | undefined | null ) : Try < B > ;
5+ catch < B = never > (
6+ onfailure : ( ( reason : unknown ) => B | Try < B > ) | undefined | null
7+ ) : Try < A | B > ;
68 finally ( onfinally ?: ( ( ) => void ) | undefined | null ) : Try < A > ;
79
810 unwrap ( ) : A ;
@@ -22,7 +24,13 @@ export class Success<A> implements ITry<A> {
2224 return "Try" ;
2325 }
2426
25- then < B = A > ( onsuccess : ( value : A ) => B | Try < B > ) : Try < B > {
27+ then < B = A > (
28+ onsuccess : ( ( value : A ) => B | Try < B > ) | undefined | null
29+ ) : Try < B > {
30+ if ( onsuccess === undefined || onsuccess === null ) {
31+ return this as unknown as Try < B > ;
32+ }
33+
2634 try {
2735 const next = onsuccess ( this . value ) ;
2836 if ( Try . isTry ( next ) ) {
@@ -35,7 +43,9 @@ export class Success<A> implements ITry<A> {
3543 }
3644 }
3745
38- catch < B = never > ( onfailure : ( reason : unknown ) => B | Try < B > ) : Try < A | B > {
46+ catch < B = never > (
47+ onfailure : ( ( reason : unknown ) => B | Try < B > ) | undefined | null
48+ ) : Try < A | B > {
3949 return this as unknown as Try < A | B > ;
4050 }
4151
@@ -70,11 +80,19 @@ export class Failure<A> implements ITry<A> {
7080 return "Try" ;
7181 }
7282
73- then < B = A > ( onsuccess : ( value : A ) => B | Try < B > ) : Try < B > {
83+ then < B = A > (
84+ onsuccess : ( ( value : A ) => B | Try < B > ) | undefined | null
85+ ) : Try < B > {
7486 return this as unknown as Try < B > ;
7587 }
7688
77- catch < B = never > ( onfailure : ( reason : unknown ) => B | Try < B > ) : Try < A | B > {
89+ catch < B = never > (
90+ onfailure : ( ( reason : unknown ) => B | Try < B > ) | undefined | null
91+ ) : Try < A | B > {
92+ if ( onfailure === undefined || onfailure === null ) {
93+ return this as unknown as Try < A | B > ;
94+ }
95+
7896 try {
7997 const next = onfailure ( this . error ) ;
8098 if ( Try . isTry ( next ) ) {
0 commit comments