DEV Community

Alessandro Maclaine
Alessandro Maclaine

Posted on

Checking Elements in Options in Effect-TS: A Practical Guide

Effect-TS provides methods to check if an Option contains a specific value. These functions allow you to determine the presence of a value within an Option, either using a custom equivalence function or the default equivalence. In this article, we'll explore two key functions for checking elements in Options: O.containsWith and O.contains.

Example 1: Checking Elements with Custom Equivalence using O.containsWith

Concept

The O.containsWith function checks if an Option contains a specified value by using a custom equivalence function. This function returns true if the Option contains the value according to the provided equivalence; otherwise, it returns false.

Code

function elements_ex01() {
  const numberEquivalence = Eq.number;

  const some1 = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.containsWith(numberEquivalence)(1))); // Output: true (Option contains 1)
  console.log(pipe(some1, O.containsWith(numberEquivalence)(2))); // Output: false (Option does not contain 2)
  console.log(pipe(none, O.containsWith(numberEquivalence)(1))); // Output: false (Option is None)
}
Enter fullscreen mode Exit fullscreen mode

Explanation

  • pipe(some1, O.containsWith(numberEquivalence)(1)): The Option contains the value 1, and the custom equivalence function confirms this, resulting in true.
  • pipe(some1, O.containsWith(numberEquivalence)(2)): The Option does not contain the value 2, so the result is false.
  • pipe(none, O.containsWith(numberEquivalence)(1)): The Option is None, so the result is false regardless of the value checked.

This function is useful when you need to check if an Option contains a specific value with a custom comparison logic, allowing for more flexibility in determining equivalence.

Example 2: Checking Elements with Default Equivalence using O.contains

Concept

The O.contains function checks if an Option contains a specified value using the default equivalence. It returns true if the Option contains the value; otherwise, it returns false. This function is simpler to use when you don't need custom comparison logic.

Code

function elements_ex02() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.contains(1))); // Output: true (Option contains 1)
  console.log(pipe(some1, O.contains(2))); // Output: false (Option does not contain 2)
  console.log(pipe(none, O.contains(1))); // Output: false (Option is None)
}
Enter fullscreen mode Exit fullscreen mode

Explanation

  • pipe(some1, O.contains(1)): The Option contains the value 1, so the result is true.
  • pipe(some1, O.contains(2)): The Option does not contain the value 2, so the result is false.
  • pipe(none, O.contains(1)): The Option is None, so the result is false regardless of the value checked.

This function is useful for quickly checking if an Option contains a specific value when the default equivalence suffices, making it straightforward and easy to use.

Conclusion

Effect-TS provides efficient ways to check if an Option contains a specific value. With O.containsWith, you can use custom equivalence functions to define how the comparison should be made, offering flexibility for complex scenarios. Meanwhile, O.contains provides a simpler approach, leveraging the default equivalence for straightforward checks. These functions allow you to handle Options effectively, ensuring you can verify the presence of values in an intuitive and controlled manner.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay