Effect-TS는 옵션 및 둘 중 하나 유형을 처리하기 위한 강력한 도구를 제공합니다. 이 기사에서는 라이브러리의 유틸리티 함수를 사용하여 이러한 유형을 변환하고 조작하는 다양한 방법을 살펴보겠습니다.
O.getRight 함수는 오류를 삭제하면서 둘 중 하나를 옵션으로 변환합니다. 둘 중 하나가 맞으면 O.some(value)을 반환하고, 그렇지 않으면 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 }
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') }
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) }
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) }
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) }
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) }
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) }
O.toRefinement 함수는 옵션을 반환하는 함수를 유형 가드로 변환하여 보다 구체적인 유형 검사를 허용합니다.
import { Option as O } from 'effect'; function conversions_ex08() { const isPositive = (n: number): O.Option=> 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) }
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 및 Each 유형을 변환하고 조작하기 위해 Effect-TS에서 제공하는 다양한 기능을 살펴보았습니다. 이러한 함수는 코드의 유연성과 표현력을 향상시켜 선택적 값과 오류가 발생하기 쉬운 값을 보다 적절하게 처리할 수 있도록 해줍니다. 둘 중 하나를 옵션으로 변환하거나, 여러 옵션 값을 연결하거나, 유형이 안전한 작업을 수행해야 하는 경우 Effect-TS는 이러한 작업을 단순화할 수 있는 강력한 도구 세트를 제공합니다. 이러한 유틸리티를 활용하면 값의 유무를 효과적으로 처리하는 더 깔끔하고 유지 관리하기 쉬운 코드를 작성할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3