Using Object.assign with Effect.fn in TypeScript
import { Effect } from "effect";
Effect.runPromise(
Effect.gen(function* () {
const generateValue = Effect.fn(
function* () {
return 42;
},
(e) => Object.assign(e, { value: 12 }),
);
// @ts-expect-error value is not defined
console.log(generateValue().value);
})
)
Effect.runPromise(
Effect.gen(function* () {
const generateValue = () => Effect.gen(function* () {
return 42;
}).pipe((e) => Object.assign(e, { value: 12 }));
console.log(generateValue().value);
})
)import { Effect } from "effect";
Effect.runPromise(
Effect.gen(function* () {
const generateValue = Effect.fn(
function* () {
return 42;
},
(e) => Object.assign(e, { value: 12 }),
);
// @ts-expect-error value is not defined
console.log(generateValue().value);
})
)
Effect.runPromise(
Effect.gen(function* () {
const generateValue = () => Effect.gen(function* () {
return 42;
}).pipe((e) => Object.assign(e, { value: 12 }));
console.log(generateValue().value);
})
)undefined
12undefined
12Is there any difference between the Effect returned from calling
Effect.fnEffect.fn and () => Effect.gen() => Effect.gen?