Idiomatic Implementation of Option Handling in TypeScript Function
What'd be an idiomatic effect way of writing this function
fnfn?function fn(a: Option.Option<string>, b: Option.Option<boolean>): Option.Option<void> {
if (Option.isSome(a) && Option.isSome(b)) {
return Option.some(both(Option.getOrThrow(a), Option.getOrThrow(b)));
}
if (Option.isSome(a)) {
return Option.some(onlyStr(Option.getOrThrow(a)));
}
if (Option.isSome(b)) {
return Option.some(onlyBool(Option.getOrThrow(b)));
}
return Option.none();
}
const both = (a:string, b:boolean) => console.log(a, b)
const onlyStr = (x:string) => console.log(x)
const onlyBool = (x:boolean) => console.log(x)function fn(a: Option.Option<string>, b: Option.Option<boolean>): Option.Option<void> {
if (Option.isSome(a) && Option.isSome(b)) {
return Option.some(both(Option.getOrThrow(a), Option.getOrThrow(b)));
}
if (Option.isSome(a)) {
return Option.some(onlyStr(Option.getOrThrow(a)));
}
if (Option.isSome(b)) {
return Option.some(onlyBool(Option.getOrThrow(b)));
}
return Option.none();
}
const both = (a:string, b:boolean) => console.log(a, b)
const onlyStr = (x:string) => console.log(x)
const onlyBool = (x:boolean) => console.log(x)