unicloud云函数TS开发最优解决方案

JavaScript08

unicloud云函数TS开发最优解决方案,第1张

Flow.js在基本语法上和TS很相像,我认为它是一个针对老项目的类型推导方案,因为只需要安装简单的包和给文件加入Flow的标识就可以给对应的文件提供类型推导的功能,所以针对目前我所做的这个业务来讲,不存在老项目,所以既然是新项目就不如直接上TS。

在云函数开发过程中,我们在插件市场选择了一款非常简洁已拓展的explain框架,这个框架目前已经支持单路由和restfulAPI还有基本的过滤拦截器,那么目前这个框架没有做TS的解决方案,我就斗胆替作者大大想一个曲线救国的方案,而且这个方案有以下特点:

uni官方的云函数大小限制是10M,所以我们不能把依赖都安装在项目中,需要我们全局安装:

2个插件的玩法很多,尤其是nodemon,在我们这个解决方案中我们只需要简单的配置几个文件就可以把我们的项目跑起来了。

我们的云函数目录是这样的,这是搭配了前面提到的explain.js,在etsc.config.js中我们可以配置一下,输出的js版本规范以及目录和是否进行压缩:

在services目录中编写完ts文件之后,esbuild-node-tsc会把js文件放到dist目录之下,我们现在只需要更改explain.js默认配置:

这样explain会从dist下找文件而不是从services文件下找

我们在这个根目录下运行编译命令即可

这个时候我们运行这个函数就会发现,它已经达到了我们的目标了:

但是我们需要services下的文件一变更就编译放到dist下,我们就需要nodemon帮助我们做这个事情(nodemon.json):

监听services目录,包括文件名为ts,js,json,执行命令etsc

然后我们再把这个运行nodemon的命令放到package.json中:

安装babel和flow

babel 和 flow 安装后, yarn run flow init ,生成 .flowconfig 文件

在 pacakge.json ,scripts中添加 "flow": "flow"

yarn run flow 来检测有无错误

yarn run build 将文件打包到 lib 文件夹下,此时打包好的文件已经经过 babel 的处理,可以正常运行

求和函数

不用 flow 的错误处理逻辑如下

会报错,因为类型推断 c 不可能是 string