effect-ts - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
llej
V2EX    TypeScript

effect-ts

  •  
  •   llej 201 天前 2198 次点击
    这是一个创建于 201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    effect-ts

    https://effect.website/

    为什么是 effect-ts

    最近接触到了 Effect ts (如何看待 fp-ts 及 effect-ts 分别实施的两种风格相异的高阶类型系统?) ,顿时感觉这就是我一直追求的东西,以前写过 对于依赖注入的思考-二 等文章,Effect 完美的满足了我的需求。

    ts 带来了无与伦比的类型操作,但个人想要写出一个严谨的 ts 程序,尤其是能够确保正确的错误处理和依赖处理依旧是一个很难的事情,尤其是依赖倒置。

    错误处理:ts 的 catch 语句中的 error 默认类型是 unknown 。这是非常稳健的,因为事实上就是没法知道一段程序会抛出哪些错误,而 effect-ts 将错误在返回值类型中进行进行了显式标注,这样就可以知道一段程序可能会抛出哪些错误了。

    依赖处理:这个和错误处理其实是一样的,就像难以预知程序将抛出哪些错误一样难以知道一段程序需要哪些依赖。effect-ts 给出了和错误处理一样的方案。

    我刚刚使用 Effect 重构了 OceanPress_js,整个过程极为流畅,我对 Effect-ts 了解并不算透彻,但是一顿重构修改了特别多的地方,结果没有出现什么大 bug ,整个程序的依赖和调用都更清晰了

    唯一出现的 bug 就是 ''+Effect 返回对象 这样的语句,ts 他不会报错,不然的话这波重构简直完美。这个都不算 effect 的问题是 js 的问题。

    effect 速查手册

    使用 runPromise 运行程序

    可以使用 Context.empty().pipe(Context.add(...),...) 这样的方式组合多个依赖,然后尽量将依赖拆分的更细一些,这样方便执行小段程序而不用注入大而全的依赖

    10 条回复    2025-03-26 13:21:41 +08:00
    xiaokekeT
        1
    xiaokekeT  
       201 天前   1
    使用 Layer 去组合依赖是更加推荐的方式,Context 更适合一些“内部”的操作较为手动挡。
    在这两年都使用 Effect 体验很棒,Typescript 也越来越好,幸福
    nomagick
        2
    nomagick  
       201 天前
    什么鬼东西?

    这代码有一丁点可读性可维护性么

    ts 的这个类型系统怎么搞的好像邪教一样的;本意是提升可读性可维护性,怎么到了你这本末倒置了

    没有冒犯的意思,
    但大多数前端连面向对象都根本不了解,还想要“严谨”,搞什么 FP ,
    别了,真的,民科,民工程师,民程序员

    有空真的看一下谭浩强比啥都靠谱
    shakaraka
        3
    shakaraka  
    PRO
       201 天前
    。。。。。

    要不你看看 rxjs ? https://rxjs.dev/
    xiaokekeT
        4
    xiaokekeT  
       201 天前   1
    @wunonglin https://effect.website/docs/additional-resources/myths/#effect-is-the-same-as-rxjs-and-shares-its-problems
    foolishcrab
        5
    foolishcrab  
       201 天前 via iPhone
    @xiaokekeT 这段写的挺好的
    duli950523
        6
    duli950523  
       201 天前
    @nomagick #2 啊这。。。我一时之间分不清是什么身份
    llej
        7
    llej  
    OP
       201 天前 via Android
    @xiaokekeT 是的,我还在学习中
    llej
        8
    llej  
    OP
       201 天前 via Android
    @nomagick 个人觉得使用 effect 之后的维护性更好一些
    llej
        9
    llej  
    OP
       201 天前 via Android
    @wunonglin rxjs 也接触过,正如 xiaokeket 发的那篇文章中说的一样,对于错误和依赖他并不是很好处理
    AV1
        10
    AV1  
       201 天前
    @nomagick 我觉得,2025 年还在鼓吹面向对象老三样的,也是一种邪教
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5560 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 276ms UTC 07:21 PVG 15:21 LAX 00:21 JFK 03:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86