type One = {
a: Option.Option<string>
b: Option.Option<string>
c: Option.Option<string>
d: Option.Option<string>
e: Option.Option<string>
f: Option.Option<string>
}
const firstSample: Option.Option<One> = Match.value({
a: Option.none(),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}).pipe(
Match.when({
a: Option.isNone,
b: Option.isNone,
c: Option.isNone,
d: Option.isNone,
e: Option.isNone,
f: Option.isNone,
}, () => Option.none()),
Match.orElse((v) => Option.some(v))
)
console.log(firstSample)
const secondSample: Option.Option<One> = Option.some({
a: Option.none(),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}).pipe(
Option.flatMap((obj) =>
Array.fromRecord(obj).some(([_, v]) => Option.isSome(v))
? Option.some(obj)
: Option.none())
)
console.log(secondSample)
/**
if at least one value is some it should be
{
a: Option.some('a'),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}
if all is none it should be just Option.none()
*/
type One = {
a: Option.Option<string>
b: Option.Option<string>
c: Option.Option<string>
d: Option.Option<string>
e: Option.Option<string>
f: Option.Option<string>
}
const firstSample: Option.Option<One> = Match.value({
a: Option.none(),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}).pipe(
Match.when({
a: Option.isNone,
b: Option.isNone,
c: Option.isNone,
d: Option.isNone,
e: Option.isNone,
f: Option.isNone,
}, () => Option.none()),
Match.orElse((v) => Option.some(v))
)
console.log(firstSample)
const secondSample: Option.Option<One> = Option.some({
a: Option.none(),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}).pipe(
Option.flatMap((obj) =>
Array.fromRecord(obj).some(([_, v]) => Option.isSome(v))
? Option.some(obj)
: Option.none())
)
console.log(secondSample)
/**
if at least one value is some it should be
{
a: Option.some('a'),
b: Option.none(),
c: Option.none(),
d: Option.none(),
e: Option.none(),
f: Option.none(),
}
if all is none it should be just Option.none()
*/