dubbo2.js@2.0.4
版本发布时间: 2018-06-12 15:41:47
apache/dubbo-js最新发布版本:dubbo3-3.0.0-alpha(2023-09-08 20:14:14)
issue #7
总算找到了解决这个问题的方案,这个问题的难点不是怎么实现,而是typescript怎么去定义暴露服务类型,给出代码的完美提示。这个还真有点难。但是不去解决这个问题,真的代码写的很炸。
import A from 'A',
import B from 'B'
import c from 'C'
import ...
const dubbo = new Dubbo({
interfaces: [
'A',
'B',
'C',
......
]
});
const a = A(dubbo);
const b = B(dubbo);
const c = C(dubbo);
......
//整合egg
app.dubbo = {
a,
b,
c,
......
}
同学们想这个接口规模再提高10x 代码就无法看了,当然代码上有优化的空间,但是痛点就是类型的代码提示,一旦动态就无法精确获得类型提示。
我们的翻译器生成的代码格式基本都是 export xxProvider = (dubbo: Dubbo): XxProvider => dubbo.proxyService<IXxProvider>({...});
在typescript2.8以后支持了conditional type.可以很好解决我们这个问题。
将provider集合起来,然后放入Dubbo中,
就可以获取优秀的开发体验
enjoy :)
在2.0.4+版本中,我们api不再兼容interfaces参数方式,全面使用service参数。
//注入到dubbo的服务,例如:
const userRequest = (dubbo: Dubbo): IUserRequest => dubbo.proxyService<IUserRequest>({...});
const service = {userRequest};
const dubbo = new Dubbo<typeof service>({
// ....,other parameters
service
});
dubbo.service.userRequest.xxx()
更多细节,请参阅 examples或者单元测试。