#最近在开发 TsFullStack ,其中的后端 api 深度集成了 Effect 。
例如下面这个上传接口,他内部是依赖了 authService (用户信息),如果我们通过参数来传递 auth 的话,在嵌套调用的情况下会非常繁琐,尤其是后期新增一个依赖,那么就要全链路改动。
为了避免上面这个问题一般采用线程变量(在 node 中可以使用 CLS)或者 InversifyJS 这样的方案,又或者在 vue 中也有 provied inject 这样的方案。
但他们有一个最大的缺点就是在实际运行程序(或者通读代码)之前没法知道一段程序究竟依赖了什么,而 Effect 通过巧妙的 ts type 解决了这个问题,例如下面是 TsFullStack 中运行包含上面 upload 相关接口的程序,我手动注释掉了 provide authService 的代码,可以看到 ts 就会提示缺少了 AuthService 。
这就实现了在实际运行程序之前知道一段程序究竟依赖了什么
那么什么场景非常需要这个特性呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.