TGViewer
Khraks dev Khraks dev @khraks_dev · 108 subscribers
Post #49 307
Khraks dev ## Effect 4.0 Добавили модуль Filter — похож на Predicate. Но Predicate больше про нативную обертку предикатов и тайпгардов. interface Filter<in Input, out Output = Input> { (input: Input): Output | absent } const absent: unique symbol = Symbol.for("ef…
Апдейт по модулю Filter github

В итоге Filter прадставляет собой вот такую функцию:

export interface Filter {
(input: Input): Result<Pass, Fail>
}


По-сути это filterMap: остается то что в succeed() плюс можно сразу мапнуть результат

Array.filter(
[1,2,3],
x => isOdd(x)
? succeed(x.toString())
: fail(x)
) // ["1", "3"]


Но дополнительный трюк в том, что были добавлены перегрузки которые одновременно принимают и обычный предикат — то есть одновременно работает и обычная фильтрация без изменения типа.

Array.filter(isOdd) // [1, 2]


Сначала я подумал, что есть какой-то unsound случай, но нет все чистенько-ладно)
Таким образом удалось избавиться от семейства функций filterMap во всей экосистеме, объединив две функции в одну.
GitHub effect-smol/packages/effect/src/Filter.ts at main · Effect-TS/effect-smol Core libraries and experimental work for Effect v4 - Effect-TS/effect-smol
  • ❤ 1
  • 👍 1
More from @khraks_dev
  1. Sep 10, 2026Добавил еще PR с Context.Mixin, чтобы подмешивать к классу поведение Context.Service Тепер…
  2. Sep 10, 2026Post #56
  3. Sep 7, 2026Post #55
  4. Sep 3, 2026Post #54
  5. Sep 3, 2026Итак HKT на основе TypeLambda interface TypeLambda { readonly Arg1: unknown; readonly Arg2…
  6. Aug 30, 2026# HKT Дефункционализация В TypeScript нет настоящих Higher-Kinded Types (HKT). А они приме…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →