@@ -46,6 +46,9 @@ const user = getUser(1).map(({ email }) => email);
4646- [ ` failure ` ] ( #failure )
4747- [ ` success ` ] ( #success )
4848- [ ` from ` ] ( #from )
49+ - [ ` fromPromise ` ] ( #fromPromise )
50+ - [ ` fromTry ` ] ( #fromTry )
51+ - [ ` from ` ] ( #from )
4952- [ ` fromMaybe ` ] ( #frommaybe )
5053- [ ` fromEither ` ] ( #fromeither )
5154- [ ` isResult ` ] ( #isresult )
@@ -109,16 +112,16 @@ function merge<F1, S1, F2, S2, F3, S3>(
109112Example:
110113
111114``` typescript
112- const v1 = initial < TypeError , number >() ; // Result<TypeError, number >.Initial
113- const v2 = pending < TypeError , number >() ; // Result<TypeError, number >.Pending
115+ const v1 = initial ; // Result<never, never >.Initial
116+ const v2 = pending ; // Result<never, never >.Pending
114117const v3 = success <TypeError , number >(2 ); // Result<TypeError, number>.Success
115118const v4 = success <ReferenceError , string >(" test" ); // Result<ReferenceError, string>.Success
116119const v5 = failure <Error , boolean >(new Error ()); // Result<Error, boolean>.Failure
117120
118- const r1 = merge ([v1 , v2 ]); // Result<TypeError , [number, number]>.Initial
119- const r2 = merge ([v2 , v5 ]); // Result<TypeError | Error, [number , boolean]>.Pending
121+ const r1 = merge ([v1 , v2 ]); // Result<never , [number, number]>.Initial
122+ const r2 = merge ([v2 , v5 ]); // Result<Error, [never , boolean]>.Pending
120123const r3 = merge ([v3 , v4 ]); // Result<TypeError | ReferenceError, [number, string]>.Success
121- const r4 = merge ([v3 , v4 , v5 ]); // Result<TypeError | ReferenceError | Error , [number, string, boolean]>.Failure
124+ const r4 = merge ([v3 , v4 , v5 ]); // Result<TypeError | Error | ReferenceError , [number, string, boolean]>.Failure
122125```
123126
124127#### ` mergeInOne `
@@ -138,8 +141,8 @@ function merge<F1, S1, F2, S2, F3, S3>(
138141Example:
139142
140143``` typescript
141- const v1 = initial < TypeError , number >() ; // Result<TypeError, number>.Initial
142- const v2 = pending < TypeError , number >() ; // Result<TypeError, number>.Pending
144+ const v1 = initial ; // Result<TypeError, number>.Initial
145+ const v2 = pending ; // Result<TypeError, number>.Pending
143146const v3 = success <TypeError , number >(2 ); // Result<TypeError, number>.Success
144147const v4 = success <ReferenceError , string >(" test" ); // Result<ReferenceError, string>.Success
145148const v5 = failure <Error , boolean >(new Error ()); // Result<Error, boolean>.Failure
@@ -178,31 +181,29 @@ merge([v1, v2, v3]); // Result<Array<TypeError | ReferenceError | Error>, [numbe
178181#### ` initial `
179182
180183``` typescript
181- function initial< F , S >() : Result <F , S >;
184+ const initial: Result <never , never >;
182185```
183186
184187- Returns ` Result ` with ` Initial ` state which does not contain value.
185188
186189Example:
187190
188191``` typescript
189- const v1 = initial (); // Result<undefined, never>.Initial
190- const v2 = initial <Error , number >(); // Result<Error, number>.Initial
192+ const v1 = initial ; // Result<undefined, never>.Initial
191193```
192194
193195#### ` pending `
194196
195197``` typescript
196- function pending< F , S >() : Result <F , S >;
198+ const pending: Result <F , S >;
197199```
198200
199201- Returns ` Result ` with ` Pending ` state which does not contain value.
200202
201203Example:
202204
203205``` typescript
204- const v1 = pending (); // Result<undefined, never>.Initial
205- const v2 = pending <Error , number >(); // Result<Error, number>.Initial
206+ const v1 = pending ; // Result<never, never>.Initial
206207```
207208
208209#### ` failure `
@@ -251,6 +252,35 @@ Example:
251252from (2 ); // Result<never, number>.Success
252253```
253254
255+ #### ` fromTry `
256+
257+ Returns ` Success ` with function result or ` Failure ` if function execution throws an error.
258+
259+ ``` typescript
260+ function fromTry<L , R >(fn : () => R ): Result <L , R >;
261+ ```
262+
263+ ``` typescript
264+ fromTry (() => 2 ); // Result<unknown, number>.Success
265+ fromTry (() => {
266+ throw new Error (" test" );
267+ }); // Result<unknown, never>.Failure
268+ ```
269+
270+
271+ #### ` fromPromise `
272+
273+ Returns promise of ` Success ` if the provided promise fulfilled or ` Failure ` with the error value if the provided promise rejected.
274+
275+ ``` typescript
276+ function fromPromise<R >(promise : Promise <R >): Promise <Result <unknown , R >>;
277+ ```
278+
279+ ``` typescript
280+ fromPromise (Promise .resolve (2 )); // Promise<Result<unknown, number>.Right>
281+ fromPromise (Promise .reject (new Error (" test" ))); // Promise<Result<unknown, never>.Left>
282+ ```
283+
254284#### ` fromMaybe `
255285
256286``` typescript
@@ -571,7 +601,7 @@ Example:
571601``` typescript
572602const v1 = success <Error , number >(2 );
573603const v2 = failure <Error , number >(new Error ());
574- const v3 = initial < Error , number >() ;
604+ const v3 = initial ;
575605
576606// Result<Error | TypeError, string>.Success with value "2"
577607const newVal1 = v1 .chain (a => success <TypeError , string >(a .toString ()));
@@ -581,7 +611,7 @@ const newVal2 = v1.chain(a => failure<TypeError, string>(new TypeError()));
581611const newVal3 = v2 .chain (a => success <TypeError , string >(a .toString ()));
582612// Result<Error | TypeError, string>.Failure with value new Error()
583613const newVal4 = v2 .chain (a => failure <TypeError , string >(new TypeError ()));
584- // Result<Error | TypeError, string>.Initial with no value
614+ // Result<TypeError, string>.Initial with no value
585615const newVal5 = v3 .chain (a => failure <TypeError , string >(new TypeError ()));
586616```
587617
@@ -598,7 +628,7 @@ Example:
598628``` typescript
599629const v1 = success <Error , number >(2 );
600630const v2 = failure <Error , number >(new Error ());
601- const v3 = initial < Error , number >() ;
631+ const v3 = initial ;
602632
603633// Promise<Result<Error | TypeError, string>.Success> with value "2"
604634const newVal1 = v1 .asyncChain (a => Promise .resolve (right <TypeError , string >(a .toString ())));
@@ -683,8 +713,8 @@ Example:
683713
684714` ` ` typescript
685715success <string , number >(10 ).unwrap (); // number
686- initial < Error , number >() .unwrap (); // throws default (Error)
687- pending < Error , number >() .unwrap ({ failure : () => new Error (' Custom' )}); // throws custom (Error)
716+ initial .unwrap (); // throws default (Error)
717+ pending .unwrap ({ failure : () => new Error (' Custom' )}); // throws custom (Error)
688718` ` `
689719
690720#### ` Result #fold `
@@ -725,6 +755,13 @@ const { value } = failure(new Error()); // Error | undefined
725755success (2 ).unwrap () // number
726756failure (new TypeError ()).unwrap () // throws
727757failure (2 ).unwrap () // throws (don't do this)
758+
759+ failure (2 ).unwrapOr (3 ) // returns 3
760+ success (2 ).unwrapOr (3 ) // returns 2
761+
762+ failure (2 ).unwrapOrElse (num => num * 2 ) // returns 4
763+ success (2 ).unwrapOrElse (num => num * 2 ) // returns 2
764+
728765` ` `
729766
730767## Development
0 commit comments