import { Match, Schema } from "effect";
class VolumeMuted extends Schema.Class<VolumeMuted>("VolumeMuted")({}) {
readonly _tag = "VolumeMuted";
}
class VolumeSet extends Schema.Class<VolumeSet>("VolumeSet")({
volume: Schema.Number.check(Schema.isBetween({ minimum: 0, maximum: 100 }))
}) {
readonly _tag = "VolumeSet";
}
const VolumeUnion = Schema.Union([VolumeSet, VolumeMuted]);
type VolumeUnion = typeof VolumeUnion.Type
// CAN I DO THIS?!?!
class VolumeUnionSchema extends Schema.Union([VolumeSet, VolumeMuted]) {
readonly _tag = "VolumeUnion";
isMuted(): boolean {
return Match.valueTags(this, {
VolumeSet: (v) => v.volume === 0,
VolumeMuted: () => true
});
}
}
import { Match, Schema } from "effect";
class VolumeMuted extends Schema.Class<VolumeMuted>("VolumeMuted")({}) {
readonly _tag = "VolumeMuted";
}
class VolumeSet extends Schema.Class<VolumeSet>("VolumeSet")({
volume: Schema.Number.check(Schema.isBetween({ minimum: 0, maximum: 100 }))
}) {
readonly _tag = "VolumeSet";
}
const VolumeUnion = Schema.Union([VolumeSet, VolumeMuted]);
type VolumeUnion = typeof VolumeUnion.Type
// CAN I DO THIS?!?!
class VolumeUnionSchema extends Schema.Union([VolumeSet, VolumeMuted]) {
readonly _tag = "VolumeUnion";
isMuted(): boolean {
return Match.valueTags(this, {
VolumeSet: (v) => v.volume === 0,
VolumeMuted: () => true
});
}
}