> 웹 프론트엔드 > JS 튜토리얼 > Effect-TS에서 옵션 변환 탐색

Effect-TS에서 옵션 변환 탐색

WBOY
풀어 주다: 2024-07-18 04:20:30
원래의
725명이 탐색했습니다.

Exploring Option Conversions in Effect-TS

Effect-TS는 Option 및 Each 유형을 처리하기 위한 강력한 도구를 제공합니다. 이 기사에서는 라이브러리의 유틸리티 함수를 사용하여 이러한 유형을 변환하고 조작하는 다양한 방법을 살펴보겠습니다.

예 1: O.getRight를 사용하여 둘 중 하나를 옵션으로 변환

O.getRight 함수는 오류를 삭제하면서 둘 중 하나를 옵션으로 변환합니다. 둘 중 하나가 맞으면 O.some(값)을 반환하고, 그렇지 않으면 O.none을 반환합니다.

import { Option as O, Either as E, pipe } from 'effect';

function conversions_ex01() {
  const eitherRight = E.right('ok'); // Create an Either containing the value 'ok'
  const eitherLeft = E.left('error'); // Create an Either representing an error

  console.log(O.getRight(eitherRight)); // Output: Some('ok')
  console.log(O.getRight(eitherLeft)); // Output: None
}
로그인 후 복사

예 2: O.getLeft를 사용하여 둘 중 하나를 옵션으로 변환

O.getLeft 함수는 값을 버리고 둘 중 하나를 옵션으로 변환합니다. 둘 중 하나가 왼쪽이면 O.some(error)을 반환하고, 그렇지 않으면 O.none을 반환합니다.

import { Option as O, Either as E, pipe } from 'effect';

function conversions_ex02() {
  const eitherRight = E.right('ok'); // Create an Either containing the value 'ok'
  const eitherLeft = E.left('error'); // Create an Either representing an error

  console.log(O.getLeft(eitherRight)); // Output: None
  console.log(O.getLeft(eitherLeft)); // Output: Some('error')
}
로그인 후 복사

예 3: O.getOrElse를 사용하여 값 또는 기본값 가져오기

O.getOrElse 함수는 Option 내부 값이 Some인 경우 해당 값을 반환하고, 그렇지 않으면 제공된 기본값을 반환합니다.

import { Option as O, pipe } from 'effect';

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

  console.log(
    pipe(
      some,
      O.getOrElse(() => 'default')
    )
  ); // Output: 1 (since some contains 1)
  console.log(
    pipe(
      none,
      O.getOrElse(() => 'default')
    )
  ); // Output: 'default' (since none is None)
}
로그인 후 복사

예제 4: O.orElse를 사용한 옵션 연결

O.orElse 함수는 self가 None이면 제공된 Option을 반환하고, 그렇지 않으면 self를 반환합니다. 이 기능을 사용하면 대체 옵션이 다른 옵션인 옵션을 연결할 수 있습니다.

import { Option as O, pipe } from 'effect';

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

  console.log(
    pipe(
      some1,
      O.orElse(() => some2)
    )
  ); // Output: Some(1) (since some1 contains 1)
  console.log(
    pipe(
      none,
      O.orElse(() => some2)
    )
  ); // Output: Some(2) (since none is None and fallback is some2)
}
로그인 후 복사

예제 5: O.orElseSome을 사용하여 기본값으로 대체

O.orElseSome 함수는 self가 None인 경우 Some에 래핑된 제공된 기본값을 반환하고, 그렇지 않으면 self를 반환합니다. 이 함수를 사용하면 폴백이 Some에 래핑된 기본값인 옵션 체인을 허용합니다.

import { Option as O, pipe } from 'effect';

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

  console.log(
    pipe(
      some,
      O.orElseSome(() => 2)
    )
  ); // Output: Some(1) (since some contains 1)
  console.log(
    pipe(
      none,
      O.orElseSome(() => 2)
    )
  ); // Output: Some(2) (since none is None and fallback is 2)
}
로그인 후 복사

예제 6: O.orElseEither를 사용하여 두 컨텍스트 중 하나와 옵션 연결

O.orElseEither 함수는 왼쪽이 대체 옵션에서, 오른쪽이 원래 옵션에서 나온 둘 중 하나를 포함하는 옵션을 반환합니다. 이 기능을 사용하면 폴백이 더 많은 컨텍스트를 위해 둘 중 하나를 제공하는 옵션 체인을 사용할 수 있습니다.

import { Option as O, Either as E, pipe } from 'effect';

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

  console.log(
    pipe(
      some1,
      O.orElseEither(() => some2)
    )
  ); // Output: Some(Right(1)) (since some1 contains 1)
  console.log(
    pipe(
      none,
      O.orElseEither(() => some2)
    )
  ); // Output: Some(Left(2)) (since none is None and fallback is some2)
}
로그인 후 복사

예제 7: O.firstSomeOf를 사용하여 Iterable에서 첫 번째 Some 찾기

O.firstSomeOf 함수는 옵션의 반복 가능 항목에서 발견된 첫 번째 Some을 반환합니다. 모두 None이면 None을 반환합니다.

import { Option as O } from 'effect';

function conversions_ex07() {
  const options = [O.none(), O.some(1), O.some(2)]; // Create an iterable of Options
  const optionsAllNone = [O.none(), O.none()]; // Create an iterable of None Options

  console.log(O.firstSomeOf(options)); // Output: Some(1) (since the first non-None Option is Some(1))
  console.log(O.firstSomeOf(optionsAllNone)); // Output: None (since all Options are None)
}
로그인 후 복사

예제 8: O.toRefinement를 사용하여 옵션을 반환하는 함수를 Type Guard로 변환

O.toRefinement 함수는 Option을 반환하는 함수를 유형 가드로 변환하여 보다 구체적인 유형 검사를 가능하게 합니다.

import { Option as O } from 'effect';

function conversions_ex08() {
  const isPositive = (n: number): O.Option<number> => n > 0 ? O.some(n) : O.none();
  const isPositiveRefinement = O.toRefinement(isPositive);

  console.log(isPositiveRefinement(1)); // Output: true (since 1 is positive)
  console.log(isPositiveRefinement(-1)); // Output: false (since -1 is not positive)
}
로그인 후 복사

예제 9: O.toArray를 사용하여 옵션을 배열로 변환

O.toArray 함수는 옵션을 배열로 변환합니다. Option이 Some이면 값이 포함된 배열을 반환합니다. None이면 빈 배열을 반환합니다.

import { Option as O } from 'effect';

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

  console.log(O.toArray(some)); // Output: [1] (since some contains 1)
  console.log(O.toArray(none)); // Output: [] (since none is None)
}
로그인 후 복사

결론

이번 글에서는 Option 및either 유형을 변환하고 조작하기 위해 Effect-TS에서 제공하는 다양한 기능을 살펴보았습니다. 이러한 함수는 코드의 유연성과 표현력을 향상시켜 선택적 값과 오류가 발생하기 쉬운 값을 보다 적절하게 처리할 수 있도록 해줍니다. 둘 중 하나를 옵션으로 변환하거나, 여러 옵션 값을 연결하거나, 유형이 안전한 작업을 수행해야 하는 경우 Effect-TS는 이러한 작업을 단순화할 수 있는 강력한 도구 세트를 제공합니다. 이러한 유틸리티를 활용하면 값의 유무를 효과적으로 처리하는 더 깔끔하고 유지 관리하기 쉬운 코드를 작성할 수 있습니다.

위 내용은 Effect-TS에서 옵션 변환 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿