简介
Nest.js 是一个基于 Node.js 和 TypeScript 的开源 Web 框架,它使用了现代的 JavaScript 工具,通过减少样板代码的数量来提供完整的开发体验。本文将介绍如何在 Nest.js 项目中使用 TypeScript。
安装 TypeScript
在开始使用 TypeScript 前,需要先安装它。可以使用如下命令进行安装:
npm install -g typescript
初始化 Nest.js 项目
在安装完 TypeScript 后,需要初始化一个 Nest.js 项目。可以使用如下命令进行初始化:
npx @nestjs/cli new nest-app
这个命令会在当前目录下创建一个名为 nest-app 的新项目。
配置 TypeScript
在初始化 Nest.js 项目后,需要将 TypeScript 配置添加到项目中。可以在项目根目录下创建一个文件 tsconfig.json
:
-- -------------------- ---- ------- - ------------------ - --------- ----------- ------------------ ----- ------------------------- ----- ------------------------ ----- --------- ------ ------------------- ------- ------------ ----- --------- --------- ---------- --- -- ---------- ------------ -
在这个文件中,需要对几个关键的 compilerOptions 进行配置:
module
:指定需要使用的模块类型。esModuleInterop
:确保在导入 CommonJS 模块时,不会出现import foo = require('foo')
这样的语法。experimentalDecorators
和emitDecoratorMetadata
:用来支持 Nest.js 中的装饰器。target
:指定目标 ES 版本。moduleResolution
:指定模块解析规则。sourceMap
:生成调试信息。outDir
:编译后的文件输出目录。baseUrl
:指定src
目录为根目录。
使用 TypeScript 编写控制器
在 Nest.js 中,控制器是负责处理 HTTP 请求的模块。下面是 Nest.js 控制器的一个示例:
-- -------------------- ---- ------- ------ - ----------- --- - ---- ----------------- ------------------ ------ ----- ------------- - ------ ----------- ------ - ------ ------ -------- - -
在这个示例中,我们使用 @Controller
装饰器将控制器标记为一个 Nest.js 控制器,并在路由中指定了路径为 /api
。使用 @Get
装饰器将 getHello()
方法标记为处理 HTTP GET 请求。在 TypeScript 中使用装饰器需要在 tsconfig.json
文件中启用 experimentalDecorators
和 emitDecoratorMetadata
。
使用 TypeScript 编写服务
在 Nest.js 中,服务用于在控制器和其他服务之间共享某些功能。下面是 Nest.js 服务的一个示例:
import { Injectable } from '@nestjs/common'; @Injectable() export class AppService { getHello(): string { return 'Hello World!'; } }
在这个示例中,我们使用 @Injectable
装饰器将服务标记为一个 Nest.js 服务。这个服务包含了一个 getHello()
方法,它将返回一个字符串。
启动 Nest.js 服务器
在编写了控制器和服务之后,需要启动 Nest.js 服务器。可以使用如下命令启动:
npm run start
在启动后,可以在浏览器中访问 http://localhost:3000/api
,应该会返回一个“Hello World!”字符串。
总结
本文介绍了如何在 Nest.js 项目中使用 TypeScript。需要做的就是安装 TypeScript、初始化 Nest.js 项目、配置 TypeScript、编写控制器和服务,最后启动 Nest.js 服务器。希望本文对你学习 Nest.js 和 TypeScript 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e89813f6b2d6eab34225aa