TypeScript教程(十)– Node应用

​本文是本系列最后一篇,使用Node Express和TypeScript构建一个相对简单的API。


使用Node执行TypeScript代码

新建文件夹 reminders-api,并用vscode打开。再新建index.ts,写一些TypeScript代码,并使用node执行它。

提示出错了。

因为Node使用了JavaScript引擎,它并不识别TypeScript。我们有两个选择。

第一种选择,先编译成JavaScript(tsc index.ts),然后执行(node index.js)。之前我们都是这么做的。

第二种选择,使用 ts-node。我们就用这种方法。

运行:npm init -y

初始化生成了 package.json文件。

再安装 ts-node。并带上 -D 参数表示只在开发环境中安装该库。

npm i -D ts-node

删除package.json中scripts中的”test”,并添加。

“start”: “ts-node index.ts”

ts-node相当于合并了前面的两个步骤(编译和执行),这样我们就可以在Node中直接执行TypeScript代码了。

npm start

另外也可以加上 -g 参数表示全局安装,这样可以在所有项目中使用。

sudo npm i -g ts-node


建立一个Express项目

首先准确安装以下软件包:

npm i express

npm i -D typescript @types/node @types/express

我们已安装了typescript(全局方式),为什么要再安装一遍typescript?原因是项目可能会移到其他环境,而其他环境未必已全局安装了typescript,所以这里明确在项目里安装。

接着初始化生成tsconfig.json。

tsc –init

我们暂保持tsconfig.json不变,在项目有需要时才更改配置。

简单在index.ts中键入一些express的代码。

当然可以使用ts-node来运行,但每当我们的代码有修改时,需要手动重启服务才生效,有点麻烦。

我们选择用nodemon,它监视我们的文件,当文件有变化时自动重启服务,这样我们就能即时看到修改的结果。最新版本的nodemon支持ts-node,它会告诉TypeScript编译器将代码编译成JavaScript并运行。

npm i -D nodemon

接着,我们修改package.json的scripts:

“start”: “nodemon index.ts”

运行express。

npm start

然后对代码进行小修改,我们能即时看到修改的变化,说明nodemon已帮我们进行了服务的重启。


创建基本路径

在index.ts的listen语句前,添加一条基本路径。查看效果。


创建路由

新建routers文件夹,再新建reminders.ts文件,创建 /reminders路径并导出。

然后再在index.ts中使用该路径。


解释请求

要用post方法来创建reminder,首先得获取请求体。

新建dots文件夹,再新建create-reminder.ts文件,定义请求体的结构CreateReminderDto,作为示例 ,只有简单的一个title字段。

在reminders.ts中,添加一个post方法,获取请求体req.body,默认情况下req.body的类型是any,我们手动指定为CreateReminderDto,然后将title的内容通过json格式返回给客户端。

express默认不解释请求体的json结构,需要安装一个json中间件,新版本的express已包含该中间件,我们在index.ts里添加这个json解释器。

app.use(express.json())

然后,我们在postman中进行测试,传递{“title”:”My title”},并确认能正确返回结果。


构建API

在真实的项目中,API处理数据一般是存入数据库,且id自动生成。这个例子我们尽量保持简单,将数据存于数组中。

新建models文件夹,并新建reminder.ts文件,创建类Reminder,用于表示reminder的结构。

在post方法中,我们生成Reminder对象,用当前时间戳来模拟 id,然后将其存于数组中。

get方法,则直接获取数组。

在postman测试。

我们实现了API端点的get和post方法,delete, put方法也很类似,这里就不再详述了。


小结

本文利用Node Express和TypeScript构建了一个简单的API,演示了TypeScript在Node中的应用。

《TypeScript教程》至此已全部结束,感谢您的阅读,希望对您有所帮助。

我们下一个系列再见。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注