MyGit

dubbo2.js@2.0.4

apache/dubbo-js

版本发布时间: 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.可以很好解决我们这个问题。

image

将provider集合起来,然后放入Dubbo中, image

就可以获取优秀的开发体验

image

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或者单元测试。

相关地址:原始地址 下载(tar) 下载(zip)

查看:2018-06-12发行的版本