Skip to content

Result must have a '[Symbol.iterator]()' method that returns an iterator #18

@Todomir

Description

@Todomir

When trying to yield* any Result or Result returning function, we get Type must have a '[Symbol.iterator]()' method that returns an iterator.(2488).

Example

import { Result } from "typescript-result";

class IllegalArgumentError extends Error {
  readonly type = "illegal-argument-error";
}

function divide(a: number, b: number) {
  if (b === 0) {
    return Result.error(
      new IllegalArgumentError("Division by zero is not allowed.")
    );
  }

  return Result.ok(a / b);
}

const result = Result.gen(function* () {
  const r = yield* divide(10, 0); // Type 'Error<IllegalArgumentError> | Ok<number>' must have a '[Symbol.iterator]()' method that returns an iterator.(2488)
  return r;
});

Playground

https://www.typescript-result.dev/playground?code=aW1wb3J0JTIwJTdCJTIwUmVzdWx0JTIwJTdEJTIwZnJvbSUyMCUyMnR5cGVzY3JpcHQtcmVzdWx0JTIyJTNCJTBBJTBBY2xhc3MlMjBJbGxlZ2FsQXJndW1lbnRFcnJvciUyMGV4dGVuZHMlMjBFcnJvciUyMCU3QiUwQSUyMCUyMHJlYWRvbmx5JTIwdHlwZSUyMCUzRCUyMCUyMmlsbGVnYWwtYXJndW1lbnQtZXJyb3IlMjIlM0IlMEElN0QlMEElMEFmdW5jdGlvbiUyMGRpdmlkZShhJTNBJTIwbnVtYmVyJTJDJTIwYiUzQSUyMG51bWJlciklMjAlN0IlMEElMjAlMjBpZiUyMChiJTIwJTNEJTNEJTNEJTIwMCklMjAlN0IlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBSZXN1bHQuZXJyb3IoJTBBJTIwJTIwJTIwJTIwJTIwJTIwbmV3JTIwSWxsZWdhbEFyZ3VtZW50RXJyb3IoJTIyRGl2aXNpb24lMjBieSUyMHplcm8lMjBpcyUyMG5vdCUyMGFsbG93ZWQuJTIyKSUwQSUyMCUyMCUyMCUyMCklM0IlMEElMjAlMjAlN0QlMEElMEElMjAlMjByZXR1cm4lMjBSZXN1bHQub2soYSUyMCUyRiUyMGIpJTNCJTBBJTdEJTBBJTBBY29uc3QlMjByZXN1bHQlMjAlM0QlMjBSZXN1bHQuZ2VuKGZ1bmN0aW9uKiUyMCgpJTIwJTdCJTBBJTIwJTIwY29uc3QlMjByJTIwJTNEJTIweWllbGQqJTIwZGl2aWRlKDEwJTJDJTIwMCklM0IlMEElMjAlMjByZXR1cm4lMjByJTNCJTBBJTdEKSUzQiUwQQ%3D%3D

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions