re: Type-Safe Error Handling In TypeScript VIEW POST


The only thing I don’t like is that this brings us back to callbacks, which so elegantly got rid of with await.


One way I was able to deal with 'callback hell':

  • Add functional helpers like map, mapErr, biMap (match), flatMap (andThen) etc that can work with both Result... and Promise<Result...
  • Add .pipe function on Ok and Err, and Promise, pretty much as implemented in rxjs: accept to pass N amount of continuation functions with signature: (previous) => next

so now I can:

await getSomeRecordsAsync() // => Promise<Result<SomeRecords, SomeError[]>>
    map(someRecords => someRecords.map(x => x.someField).join(", ")), // => Promise<Result<string, SomeError[]>>
    mapErr(err => err.map(x => x.message).join(", ")), // => Promise<Result<string, string>>
    flatMap(saveStringAsync), // => Promise<Result<void, someError>>
    // etc

(with full Typescript typing support btw!)

Thinking about releasing it to GitHub and npm at some point :)


Would be great if typescript allows pattern matching, then you’ll do

   Err(e) => console.log(“error!”);
   Ok(value) => console.log(value);

Actually you can do something similar:


It’s not as pretty as real pattern matching but it fits to this use car.

code of conduct - report abuse