Type mismatch issues with Deferred in Effect TypeScript library

I'm having an issue with Deferred results and their types. What am i doing wrong?

import { Deferred, Effect, Schema } from "effect"

const options = Schema.Literal("optionA", "optionB")

const program = Effect.fn("test")(function*() {
  const waitForSucceed = yield* Deferred.make<string>()

  yield* Deferred.complete(waitForSucceed, Effect.succeed("test"))

  const waitForFailed = yield* Deferred.make<true>()

  yield* Deferred.complete(waitForFailed, Effect.succeed(true)) // FAILED

  const waitForFailed2 = yield* Deferred.make<typeof options.Type>()

  yield* Deferred.complete(waitForFailed2, Effect.succeed("optionA")) // FAILED
})


src/main.ts(12,28): error TS2345: Argument of type 'Deferred<true, never>' is not assignable to parameter of type 'Deferred<boolean, never>'.
  Type 'boolean' is not assignable to type 'true'.
src/main.ts(16,28): error TS2345: Argument of type 'Deferred<"optionA" | "optionB", never>' is not assignable to parameter of type 'Deferred<string, never>'.
  Type 'string' is not assignable to type '"optionA" | "optionB"'.


https://effect.website/play/#506331d4fa82
Was this page helpful?