effect-ts
为什么是 effect-ts
ts 带来了无与伦比的类型操作,但个人想要写出一个严谨的 ts 程序,尤其是能够确保正确的错误处理和依赖处理依旧是一个很难的事情,尤其是依赖倒置。
错误处理:ts 的 catch 语句中的 error 默认类型是 unknown 。这是非常稳健的,因为事实上就是没法知道一段程序会抛出哪些错误,而 effect-ts 将错误在返回值类型中进行进行了显式标注,这样就可以知道一段程序可能会抛出哪些错误了。
依赖处理:这个和错误处理其实是一样的,就像难以预知程序将抛出哪些错误一样难以知道一段程序需要哪些依赖。effect-ts 给出了和错误处理一样的方案。
我刚刚使用 Effect 重构了
OceanPress_js,整个过程极为流畅,我对 Effect-ts 了解并不算透彻,但是一顿重构修改了特别多的地方,结果没有出现什么大bug,整个程序的依赖和调用都更清晰了
唯一出现的bug 就是 ''+Effect返回对象 这样的语句,ts他不会报错,不然的话这波重构简直完美。这个都不算 effect 的问题是 js 的问题。
effect 速查手册
可以使用 Context.empty().pipe(Context.add(...),...) 这样的方式组合多个依赖,然后尽量将依赖拆分的更细一些,这样方便执行小段程序而不用注入大而全的依赖
依赖处理
每个具体的依赖被称为 service ,service 的集合就是 context 。
然后每个 service 都不应该直接依赖其他 service ,要通过 layer 来定义一个 live (在这里来实现不同 service 的依赖)(这里很有意思,相当于也是一种依赖倒置,本来 service 的架构已经是依赖倒置的典范了,所以可以称之为二阶依赖倒置?