interface RandomNumber<R = never> {
make: Effect.Effect<R, never, number>;
}
class MattsRandomNumber implements RandomNumber<SomeDep> {
make = Effect.gen(function* ($) {
const dep = yield* $(SomeDep);
return dep.a.length;
});
}
type SomeDep = { a: string };
const SomeDep = Context.Tag<SomeDep>();
const RandomNumber = Context.Tag<RandomNumber>();
const context = pipe(
Context.empty(),
Context.add(SomeDep, { a: 'asdasdad' }),
Context.add(RandomNumber, new MattsRandomNumber()) // Type 'SomeDep' is not assignable to type 'never'
);
const program = pipe(
RandomNumber,
Effect.flatMap((randomString) => randomString.make),
Effect.provideContext(context)
);
interface RandomNumber<R = never> {
make: Effect.Effect<R, never, number>;
}
class MattsRandomNumber implements RandomNumber<SomeDep> {
make = Effect.gen(function* ($) {
const dep = yield* $(SomeDep);
return dep.a.length;
});
}
type SomeDep = { a: string };
const SomeDep = Context.Tag<SomeDep>();
const RandomNumber = Context.Tag<RandomNumber>();
const context = pipe(
Context.empty(),
Context.add(SomeDep, { a: 'asdasdad' }),
Context.add(RandomNumber, new MattsRandomNumber()) // Type 'SomeDep' is not assignable to type 'never'
);
const program = pipe(
RandomNumber,
Effect.flatMap((randomString) => randomString.make),
Effect.provideContext(context)
);