Skip to content

Commit fd35945

Browse files
authored
Merge pull request #584 from macksal/macksal/ok-void-argument
Allow ok/err/okAsync/errAsync to accept zero arguments when returning void
2 parents 0252e44 + 7767eab commit fd35945

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

.changeset/thirty-avocados-explain.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"neverthrow": minor
3+
---
4+
5+
Allow ok/err/okAsync/errAsync to accept zero arguments when returning void

src/result-async.ts

+10-4
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,17 @@ export class ResultAsync<T, E> implements PromiseLike<Result<T, E>> {
228228
}
229229
}
230230

231-
export const okAsync = <T, E = never>(value: T): ResultAsync<T, E> =>
232-
new ResultAsync(Promise.resolve(new Ok<T, E>(value)))
231+
export function okAsync<T, E = never>(value: T): ResultAsync<T, E>
232+
export function okAsync<T extends void = void, E = never>(value: void): ResultAsync<void, E>
233+
export function okAsync<T, E = never>(value: T): ResultAsync<T, E> {
234+
return new ResultAsync(Promise.resolve(new Ok<T, E>(value)))
235+
}
233236

234-
export const errAsync = <T = never, E = unknown>(err: E): ResultAsync<T, E> =>
235-
new ResultAsync(Promise.resolve(new Err<T, E>(err)))
237+
export function errAsync<T = never, E = unknown>(err: E): ResultAsync<T, E>
238+
export function errAsync<T = never, E extends void = void>(err: void): ResultAsync<T, void>
239+
export function errAsync<T = never, E = unknown>(err: E): ResultAsync<T, E> {
240+
return new ResultAsync(Promise.resolve(new Err<T, E>(err)))
241+
}
236242

237243
export const fromPromise = ResultAsync.fromPromise
238244
export const fromSafePromise = ResultAsync.fromSafePromise

src/result.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,15 @@ export namespace Result {
6161

6262
export type Result<T, E> = Ok<T, E> | Err<T, E>
6363

64-
export const ok = <T, E = never>(value: T): Ok<T, E> => new Ok(value)
64+
export function ok<T, E = never>(value: T): Ok<T, E>
65+
export function ok<T extends void = void, E = never>(value: void): Ok<void, E>
66+
export function ok<T, E = never>(value: T): Ok<T, E> {
67+
return new Ok(value)
68+
}
6569

6670
export function err<T = never, E extends string = string>(err: E): Err<T, E>
6771
export function err<T = never, E = unknown>(err: E): Err<T, E>
72+
export function err<T = never, E extends void = void>(err: void): Err<T, void>
6873
export function err<T = never, E = unknown>(err: E): Err<T, E> {
6974
return new Err(err)
7075
}

0 commit comments

Comments
 (0)