Skip to content

Commit 154b189

Browse files
committed
feat(maybeAsync): allow from to accept Promise of None
1 parent e0889ad commit 154b189

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/maybeAsync.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
isPromise,
1212
MaybeMatcher,
1313
MaybeMatcherNoReturn,
14+
None,
1415
pipeFromArray,
1516
Some,
1617
} from './utilities';
@@ -26,10 +27,12 @@ export class MaybeAsync<TValue> {
2627
*/
2728
static from<TValue>(maybe: Maybe<TValue>): MaybeAsync<TValue>;
2829
static from<TValue>(maybePromise: Promise<Maybe<TValue>>): MaybeAsync<TValue>;
29-
static from<TValue>(promise: Promise<Some<TValue>>): MaybeAsync<TValue>;
30+
static from<TValue>(
31+
promise: Promise<Some<TValue> | None>
32+
): MaybeAsync<TValue>;
3033
static from<TValue>(
3134
valueOrPromiseOrMaybePromise:
32-
| Promise<Some<TValue> | Maybe<TValue>>
35+
| Promise<Some<TValue> | None | Maybe<TValue>>
3336
| Maybe<TValue>
3437
): MaybeAsync<TValue> {
3538
if (isPromise(valueOrPromiseOrMaybePromise)) {

test/maybeAsync/maybeAsync.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ describe('MaybeAsync', () => {
4747

4848
await expect(sut.toPromise()).rejects.toMatch(error);
4949
});
50+
51+
test('constructs with a Promise undefined value', async () => {
52+
const sut = MaybeAsync.from(
53+
Promise.resolve<string | undefined>(undefined)
54+
);
55+
56+
const innerMaybe = await sut.toPromise();
57+
58+
expect(innerMaybe).toHaveNoValue();
59+
});
5060
});
5161

5262
describe('some', () => {

0 commit comments

Comments
 (0)