Troubleshooting TypeScript Code: Understanding Failures in Effect Handling
This might be a javascript error I'm making, but why does this code fail?
import { Effect } from "effect"
class NegativeAgeError {
readonly _tag = "NegativeAgeError"
constructor(readonly age: number) {}
}
class IllegalAgeError {
readonly _tag = "IllegalAgeError"
constructor(readonly age: number) {}
}
const validate = (
age: number,
): Effect.Effect<number, NegativeAgeError | IllegalAgeError> => {
if (age < 0) Effect.fail(new NegativeAgeError(age))
if (age < 18) Effect.fail(new IllegalAgeError(age))
return Effect.succeed(age)
}
const program2 = Effect.orElseFail(validate(3), () => "invalid age")
const program3 = Effect.orElseSucceed(validate(3), () => 0)
console.log(Effect.runSync(validate(19)))
console.log(Effect.runSync(program2))
console.log(Effect.runSync(program3))import { Effect } from "effect"
class NegativeAgeError {
readonly _tag = "NegativeAgeError"
constructor(readonly age: number) {}
}
class IllegalAgeError {
readonly _tag = "IllegalAgeError"
constructor(readonly age: number) {}
}
const validate = (
age: number,
): Effect.Effect<number, NegativeAgeError | IllegalAgeError> => {
if (age < 0) Effect.fail(new NegativeAgeError(age))
if (age < 18) Effect.fail(new IllegalAgeError(age))
return Effect.succeed(age)
}
const program2 = Effect.orElseFail(validate(3), () => "invalid age")
const program3 = Effect.orElseSucceed(validate(3), () => 0)
console.log(Effect.runSync(validate(19)))
console.log(Effect.runSync(program2))
console.log(Effect.runSync(program3))
