npm 包 typescript-class-validator 使用教程

概述

在 TypeScript 中使用类时,为了保证数据的正确性、安全性,我们常常需要进行属性验证。这时候 npm 包 typescript-class-validator 就提供了便利。该包是一个基于装饰器的 TypeScript 类属性验证器,允许使用简洁的装饰器语法声明类及其属性的验证规则,并在属性赋值时自动进行验证。

在本文中,我们将学习如何使用 typescript-class-validator 包来实现 TypeScript 类属性的验证。

安装

使用以下命令进行安装:

npm install class-validator reflect-metadata --save

其中 reflect-metadata 是必须的,这是因为 typescript-class-validator 包内部使用了 TypeScript 的装饰器特性,需要借助 reflect-metadata 来支持。

验证装饰器

使用 typescript-class-validator 包,我们需要在类属性上使用装饰器来声明验证规则。这些装饰器统称为“验证装饰器”,可在包的 Validator 模块中找到。

以下是一些常用的验证装饰器:

装饰器 用途
IsNotEmpty 校验字符串、数组、类数组非空
IsBoolean 校验布尔值类型
IsNumber 校验数值类型
IsInt 校验整数类型
IsString 校验字符串类型
IsEmail 校验电子邮件格式
IsUrl 校验 URL 格式
IsEnum 校验枚举值是否合法
MinLength 校验字符串、数组、类数组最小长度
MaxLength 校验字符串、数组、类数组最大长度
Min 校验数值最小值
Max 校验数值最大值
MinDate 校验日期最早时间
MaxDate 校验日期最晚时间

具体使用方法,请见下一节例子。

使用

以下是一个使用 typescript-class-validator 的示例:

------ ------------ ------ ---- ---- ------------------

----- ----- -
    -------------
    ---------- -------

    --------
    -------
    --------- -------

    ---------------------- ------- --------- ------- -
        -------------- - ----------
        ------------- - ---------
    -

    ----------- ------ -
        -- ------
    -
-

----- ----- - --- --------- ---
----- ------ - ----- ----------------
--------------------

我们创建了一个名为 Order 的类,它有两个必须的属性,分别是 productId 和 quantity。我们使用 IsNotEmpty 和 IsInt 装饰器来分别验证这两个属性。

在实例化 Order 类之后,我们使用 validate 函数进行验证。validate 函数是 typescript-class-validator 包的内置验证函数,它返回一个 Promise 对象并尝试验证传入的类实例。如果类实例验证通过,Promise 的状态会被设置为 resolved,否则会被设置为 rejected。在 Promise 的 resolved 或 rejected 事件中,我们可以处理成功或失败时需要进行的操作。

在本例中,我们将验证的错误记录在一个 errors 数组中,并输出到控制台。

其它验证方法

除了使用装饰器声明验证规则之外,typescript-class-validator 还提供了其它的验证方法。以下是一些常见的验证方法:

方法名 作用
validateSync(obj) 同步验证一个类实例
validate(obj) 异步验证一个类实例
validateOrReject(obj) 如果验证不通过,则异步抛出一个 ValidationError 异常
validateOrRejectSync(obj) 同步验证一个类实例,否则抛出 ValidationError 异常

结论

typescript-class-validator 这个 npm 包为 TypeScript 类属性验证提供了非常方便、简洁、强大的方式。利用它可以轻松声明并检验属性值的完整性。同时,与它的其它优点相比,写代码的难度不算大并且可读性良好。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60067359890c4f7277583e4c


猜你喜欢

  • npm 包 mongodb-repository-wmf 使用教程

    简介 mongodb-repository-wmf 是一个基于 Node.js 的 MongoDB 插件,可以快速地增删改查 MongoDB 中的数据。它的设计以前端开发为主,提供了许多方便的 API...

    4 年前
  • npm 包 firepuma-vue-filters 使用教程

    概述 在前端开发中,经常需要对原始数据进行一些处理,以满足不同的需求。firepuma-vue-filters 是一个强大的 Vue.js 过滤器库,提供了许多常用的过滤器,让你的数据处理变得更加高效...

    4 年前
  • npm 包 firepuma-polyfills 使用教程

    介绍 firepuma-polyfills 是一个 npm 包,它提供了一些 polyfills(填充物)以支持一些旧浏览器中缺失的 API。这些 polyfills 包括: Array.proto...

    4 年前
  • npm 包 stellar-repl 使用教程

    简介 stellar-repl 是一个基于 Node.js 的 Stellar 命令行交互工具,可以在命令行中方便地使用 Stellar 相关功能。 安装 使用 npm 包管理器进行安装: --- -...

    4 年前
  • npm包firepuma-vue-devmode使用教程

    在进行前端开发时,我们经常会使用一些工具来提升开发效率。而一个好的工具包能够让我们更加舒适地开发、排错和发布应用程序。今天我想给大家介绍一个非常实用的npm包,那就是firepuma-vue-devm...

    4 年前
  • npm 包 @homitag/httpstatuserror 使用教程

    在编写前端应用过程中,我们经常需要与服务器进行交互。服务器返回的 HTTP 状态码是非常重要的信息,它告诉我们请求是否成功,如果失败,失败的原因是什么。在处理这些 HTTP 状态码时,可能会遇到一些问...

    4 年前
  • npm包 nuxt-fix使用教程

    如果你是一个前端开发者,很有可能会使用nuxt.js框架来进行开发。但是,在使用nuxt.js时,你可能遇到一些问题,如:页面无法加载、路由出现错误等等。这些问题可能会影响你的开发效率,甚至影响你的工...

    4 年前
  • npm 包 ipyjana 使用教程

    简介 ipyjana 是一款基于 TypeScript 开发的用于在浏览器中集成 Jupyter Notebooks 的 npm 包。它能够帮助开发者在前端项目中快速集成 Jupyter Notebo...

    4 年前
  • firepuma-vue-error-services 使用教程

    前言 在开发 Vue 应用程序时,错误处理是一个非常重要的话题。如果没有适当的错误处理,应用程序可能会崩溃或者给用户带来一些严重的问题。其中,很多前端开发者会选择使用现成的 npm 包来完成错误处理。

    4 年前
  • npm 包 cuba 使用教程

    前言 在前端开发中,我们经常需要使用各种 npm 包来简化我们的工作,并让我们的代码更加优雅。其中一个非常实用的 npm 包是 Cuba,它是一个轻量级的解释器,用于创建基于 DSL(领域特定语言)的...

    4 年前
  • npm 包 short-numbers 使用教程

    在前端开发过程中,我们经常需要对数字进行格式化。常见的格式化方式包括添加千位分隔符、保留小数位、将数字转化为科学计数法等。而 npm 上的 short-numbers 包提供了一种非常方便、易用的数字...

    4 年前
  • npm 包 segmented-control 使用教程

    segmented-control 是一个 React Native 的 UI 组件,用于在 iOS 设备上渲染选项卡控制,类似于 UISegmentedControl 在 iOS 中的实现。

    4 年前
  • npm 包 paste-img 使用教程

    简介 在前端开发中,经常需要将图片上传到服务器。而使用传统的上传方式需要先打开文件选择窗口,然后选择要上传的图片。这个过程相当繁琐,而且需要用户的操作。如果有一个工具能够让用户直接将图片粘贴到页面中,...

    4 年前
  • npm 包 draft-js-custom-inline-toolbar-plugin 使用教程

    介绍 Draft.js 是由 Facebook 开源的富文本编辑器框架,是 React 的一部分。它提供了丰富的 API 和扩展性,因此被广泛用于开发各种富文本编辑器。

    4 年前
  • npm 包 bonsole 使用教程

    简介 bonsole 是一个基于浏览器控制台的命令行界面工具,是前端开发中的一款非常实用的工具。它支持输入 JavaScript 代码,可以快速的进行调试和测试。而且还支持快捷键操作,可以大幅提高开发...

    4 年前
  • npm 包 @devqin/eslint-config-my 使用教程

    在前端开发中,良好的代码风格一直都是个麻烦的问题。无论是个人开发还是公司项目,代码都需要有一定的规范,以保证代码可读性、可维护性、稳定性等。常见的规范之一就是使用 eslint 工具对代码进行规范检查...

    4 年前
  • npm 包 trpg-dice 使用教程

    什么是 trpg-dice? trpg-dice 是一个用于 TRPG 游戏的骰子库,支持各种骰子的投掷,包括自定义骰子和复杂的骰子公式。 trpg-dice 的安装 在使用 trpg-dice 之前...

    4 年前
  • npm 包 eslint-config-my 使用教程

    eslint-config-my 是一个基于 ESLint 的规则包,它包含了一系列可自定义的规则配置。这个包非常适合帮助前端团队在项目中统一代码规范,提高代码质量,避免出现一些不必要的错误。

    4 年前
  • npm 包 embed-express 使用教程

    在前端开发中,经常需要将不同的应用整合在一起,比如嵌入其他网页、iframe、小程序等。此时,我们需要一个实用的工具来快速实现这个功能,而这个工具就是 npm 包 embed-express。

    4 年前
  • npm 包 jsqm 使用教程

    简介 jsqm 是一个用于处理 JSON 数据和查询的工具包。它可以实现完全的 SQL 形式查询,包括 SELECT、WHERE、ORDER BY 和 LIMIT 等。

    4 年前

相关推荐

    暂无文章