Effect-TS предоставляет различные методы для фильтрации значений внутри параметра, позволяя применять преобразования, предикаты или проверки к необязательному значению. Эти функции помогают гарантировать сохранение только соответствующих данных, отбрасывая при этом значения «Нет» или те, которые не соответствуют заданным условиям. В этой статье мы рассмотрим четыре ключевые функции для фильтрации параметров: O.partitionMap, O.filterMap, O.filter и O.exists.
Функция O.partitionMap позволяет разделить параметр Option на кортеж из двух вариантов на основе функции сопоставления, которая возвращает либо. Значения «Ether.left» разделяются на первый «Option», а значения «Ether.right» — на второй «Option». Если исходный параметр имеет значение «Нет», оба раздела имеют значение «Нет».
function filtering_ex01() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const toEither = (n: number) => (n % 2 === 0 ? E.left(n) : E.right(n)); console.log(pipe(some, O.partitionMap(toEither))); // Output: [None, Some(1)] (1 is odd, so it goes to the right) console.log(pipe(none, O.partitionMap(toEither))); // Output: [None, None] (since the Option is None) }
Эта функция полезна, когда вам нужно применить сопоставление, которое классифицирует значения, разделяя их на две группы — те, которые удовлетворяют условию, и те, которые не удовлетворяют.
Функция O.filterMap применяет функцию преобразования к значению внутри Option. Если функция возвращает Some, значение сохраняется; если он возвращает None, значение отфильтровывается. Если исходный параметр имеет значение «Нет», результат остается «Нет».
function filtering_ex02() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const toEven = (n: number) => (n % 2 === 0 ? O.some(n) : O.none()); console.log(pipe(some, O.filterMap(toEven))); // Output: None (since 1 is not even) console.log(pipe(O.some(2), O.filterMap(toEven))); // Output: Some(2) (since 2 is even) console.log(pipe(none, O.filterMap(toEven))); // Output: None (since the original Option is None) }
Эта функция полезна, если вы хотите преобразовать и отфильтровать значение внутри параметра на основе определенных условий.
Функция O.filter проверяет, удовлетворяет ли значение внутри Option заданному предикату. Если предикат удовлетворен, он возвращает исходный Option; в противном случае возвращается None. Если исходный параметр имеет значение «Нет», он остается «Нет».
function filtering_ex03() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const isEven = (n: number) => n % 2 === 0; console.log(pipe(some, O.filter(isEven))); // Output: None (since 1 is not even) console.log(pipe(O.some(2), O.filter(isEven))); // Output: Some(2) (since 2 is even) console.log(pipe(none, O.filter(isEven))); // Output: None (since the original Option is None) }
Функция O.exists проверяет, удовлетворяет ли значение внутри Option предикату, возвращая true, если это так, и false, если нет. Если параметр равен None, он возвращает false.
function filtering_ex04() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const isEven = (n: number) => n % 2 === 0; console.log(pipe(some, O.exists(isEven))); // Output: false (since 1 is not even) console.log(pipe(O.some(2), O.exists(isEven))); // Output: true (since 2 is even) console.log(pipe(none, O.exists(isEven))); // Output: false (since the original Option is None) }
Эта функция полезна, когда вам нужна быстрая проверка, чтобы определить, удовлетворяет ли значение внутри Option условию без преобразования или фильтрации самого Option.
Параметры фильтрации в Effect-TS позволяют гибко обрабатывать необязательные значения на основе условий или преобразований. Независимо от того, разделяете ли вы значения с помощью O.partitionMap, применяете преобразования с помощью O.filterMap, проверяете предикаты с помощью O.filter или просто проверяете условия с помощью O.exists, эти инструменты предоставляют надежные методы управления обработкой параметров. Используя эти функции, вы можете эффективно управлять дополнительными данными, обеспечивая сохранение или обработку только соответствующих значений.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3