Inferring the result and error types in the `makeEffect` function can be achieved by using TypeSc...

How can I properly infer the effect result and error types in the makeEffect function.

const MainLive = Layer.mergeAll(Service1.Default, Service2.Default, etc...)
const myRuntime = ManagedRuntime.make(MainLive)

type MakeEffectInput<A,E,R extends ManagedRuntime.ManagedRuntime.Context<typeof myRuntime>> = {
  effect: Effect.Effect<A,E,R>
}

const makeEffect = (_:MakeEffectInput) => {
  //ignore impl
}

const eff1 = makeEffect({
  effect: () => Effect.gen(function*(){
    const service1 = yield* Service1;
    yield* Effect.log("first effect");
    // this can return different types
    return some value here
  })
})
Was this page helpful?