npm 包 @thi.ng/checks 使用教程

前言

在前端开发中,我们经常需要验证用户输入的数据是否符合预期的格式。如果每次都自己编写一些函数来进行验证,不仅浪费时间,而且还容易出错。此时,npm 包 @thi.ng/checks 可以派上用场。

简介

@thi.ng/checks 是一个用于 JavaScript 和 TypeScript 的工具包,它提供了许多常用的数据验证函数,如 isString、isNumber、isArray、isNull、isObject 等等。

安装

在使用 @thi.ng/checks 之前,需要先安装它。可以使用 npm 进行安装,命令如下:

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

用法

在安装完成后,可以通过 import 引入 @thi.ng/checks 中的功能,例如:

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

然后,就可以使用这些函数了。比如:

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

深度

如果仅使用上面这些函数,似乎 @thi.ng/checks 并没有什么用处。但是,@thi.ng/checks 还提供了一些对于实际开发非常有用的函数,它们可以让代码更加简洁、易读、易维护。

validate

validate 函数是 @thi.ng/checks 提供的验证入参类型和值的函数,它的定义如下:

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

其中,pred 表示对某个类型的判断函数,x 表示要验证的值。如果验证通过,则 validate 函数会返回 x,否则会抛出一个类型为 Error 的异常。下面是一个使用例子:

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

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

  -- --------
-

在这个例子中,validate 函数的语义非常清晰,可以让人快速知道要校验的参数类型,这样可以避免因参数类型错误带来的一些隐蔽问题。

predicateNot

predicateNot 函数用于对一个判断函数取反,其定义如下:

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

该函数的作用是将某个判断函数的验证结果取反。这在一些需求上来说非常实用,例如:

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

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

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

在例子中,predicateNot 函数将 isString 判断函数取反,得到了一个新的判断函数 isNotString。这里 isNotString 判断函数的作用非常明显,就是判断当前值是否为非字符串。

and

and 函数用于对 多个判断函数 进行 “与” 操作,其定义如下:

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

该函数的作用是将多个判断函数进行联合验证,只有当所有验证都通过时,才会返回 true。

在实际开发过程中,我们经常需要判断一个变量是否同时满足多个条件,例如一个用户名既不能为 null 和 undefined,又不能为空字符串,这时就可以使用 and 函数:

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

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

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

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

在这个例子中,我们使用 complement 工具函数创建了 isNotEmptyString 判断函数,该函数用于判断字符串是否非空非 null 和 undefined。然后,我们使用 and 函数将 isNotEmptyString 和 complement(isEmpty) 两个判断函数进行联合验证,得到了一个新的判断函数 isValid。这里 isValid 判断函数的作用非常明显,就是判断当前字符串是否为非空字符串。

or

或函数用于对多个判断函数进行 “或” 操作,其定义如下:

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

该函数的作用是将多个判断函数进行联合验证,只要满足任意一个条件,就会返回 true。

在实际开发过程中,我们经常需要判断一个变量是否满足多个条件中的任意一个,例如一个数字既可以是正数,也可以是负数,这时就可以使用 or 函数:

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

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

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

在这个例子中,我们使用 or 函数将 isPositive 和 isNegative 两个判断条件进行联合验证,得到了一个新的判断函数 isPositiveOrNegative。这里 isPositiveOrNegative 判断函数的作用非常明显,就是判断当前数字是正数或者负数。

指导意义

通过使用 @thi.ng/checks 中的一些工具函数,可以让我们的代码更加简洁、易读、易维护。在实际开发中,一些安全性、可靠性都非常有用。 因此在开发时,建议多加尝试这些工具函数,以便更好的去优化我们的代码。

示例代码

以下代码展示了 @thi.ng/checks 常用 Api 的使用:

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


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

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

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

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

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

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

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

在这个代码中,我们创建了一个 User 类型的接口,它有一个 name、age、address 三个属性。接着,我们编写了一个 createUser 函数,用于创建 User 类型的对象,并对函数的入参进行了验证。然后,我们又创建了一些判断函数,并使用其中一些判断函数组合出一个新的判断函数 isValidUser,并用它判断了 bob 和 invalidUser 这两个对象。通过运行代码,我们可以看到第五行输出 true,这表明 bob 满足我们设定的验证条件,而第六行会抛出一个类型为 Error 的异常,这表明 invalidUser 不满足我们设定的验证条件。

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


猜你喜欢

  • npm 包 @azure-tools/eventing 使用教程

    紧跟着 Azure 的强劲启动,该公司已经开始广泛提交他们的工于场合的程序包,以便开发者可以在 Azure 上构建自己的应用,而这些程序包通过 npm 发布。 这篇文章将介绍一个名为 @azure-t...

    4 年前
  • npm 包 @azure-tools/extension 使用教程

    在前端开发中,如何高效的调用 Azure 平台的资源是一个非常关键的问题。本教程将介绍如何使用 npm 包 @azure-tools/extension 来快速地在 VS Code 中启用 Azure...

    4 年前
  • npm 包 @azure-tools/tasks 使用教程

    介绍 @azure-tools/tasks 是 Azure 工具箱(Azure Tooling)的一部分,提供了一组可被用于自动化构建和发布操作的任务(tasks)。

    4 年前
  • npm 包 @azure-tools/uri 使用教程

    在前端开发过程中,我们常常需要对 URL 进行解析、合并、处理等操作。针对这种需求,微软 Azure 团队开发了一个 npm 包 @azure-tools/uri,它提供了方便的 URL 解析和处理工...

    4 年前
  • NPM 包 Autorest 使用教程

    前言 在前端开发中,我们难免要与后端 API 打交道。通过手动编写 API 调用代码可能是一项费时费力的工作。为了提高效率,Autorest 库应运而生。本篇文章将介绍如何使用 Autorest 创建...

    4 年前
  • npm 包 @ts-common/azure-js-dev-tools 的使用教程

    简介 @ts-common/azure-js-dev-tools 是一款用于 Azure JavaScript 开发工作流的工具包,它提供了一些实用的工具函数和配置,简化了 Azure JavaScr...

    4 年前
  • npm 包 @thi.ng/memoize 使用教程

    什么是 @thi.ng/memoize? @thi.ng/memoize 是一个 npm 包,可以帮助我们优化 JavaScript 程序的性能。它主要用于优化那些计算昂贵且常常重复的函数,例如数据转...

    4 年前
  • npm 包 @thi.ng/strings 使用教程

    前言 在前端项目开发的过程中,我们经常需要对字符串进行处理和操作。在这个过程中,我们经常会用到一些常用的函数和工具库,其中一个比较好用的是 @thi.ng/strings npm 包。

    4 年前
  • npm 包 @types/react-jss 使用教程

    前言 在开发 React 项目的过程中,组件的样式处理是必不可少的一步。而 JSS(JavaScript Style Sheets)则是一种在 JavaScript 中编写 CSS 样式的解决方案。

    4 年前
  • npm 包 karma-typescript-es6-transform 使用教程

    介绍 karma-typescript-es6-transform 是一个针对 TypeScript 和 ES6 的测试框架 Karma 的 npm 包。它可以在 Karma 运行测试用例时,将使用 ...

    4 年前
  • npm 包 rollup-plugin-resolve 使用教程

    在前端开发中,我们经常需要使用一些第三方库或模块来提高开发效率。而这些库或模块通常通过 npm 进行管理和安装。然而,在项目打包时,这些依赖项的引入和解析会成为一个问题。

    4 年前
  • npm 包 @crawly/handler-exception-lambda 使用教程

    简介 @crawly/handler-exception-lambda 是一个可以用来处理 AWS Lambda 异常的 npm 包。它可以帮助前端工程师更好地管理 Lambda 函数中的错误,提高代...

    4 年前
  • npm 包 @azure/core-lro 使用教程

    前言 @azure/core-lro 是一款面向 Azure 云服务的 npm 包,主要作用是帮助开发者处理长时间运行 (Long Running Operation,简称 LRO) 的任务。

    4 年前
  • npm 包 @types/raven 使用教程

    什么是 @types/raven 在前端工程中经常使用到包管理工具npm,@types/raven 是 npm 上的一个包,它提供了sentry上写事件代码ble的api。

    4 年前
  • npm 包 @types/uniqid 使用教程

    @types/uniqid 是一个在 TypeScript 中使用 uniqid 库的声明文件包,使得在使用时可以有更好的类型检查和智能提示。 安装 在项目中安装 @types/uniqid: ---...

    4 年前
  • NPM 包 @azure/core-paging 使用教程

    什么是 @azure/core-paging @azure/core-paging 是 Azure 官方提供的用于分页数据的 JavaScript 库,可用于处理 Azure 所有支持分页的服务。

    4 年前
  • npm包aws-event-mocks使用教程

    在前端开发中,我们经常会使用AWS服务作为后端提供支持,AWS服务提供了不同类型的事件,如Lambda函数执行、Kinesis流事件、SNS通知等。为了在前端应用程序中实现这些事件的测试,我们需要一些...

    4 年前
  • npm 包 joi-assert 使用教程

    什么是 joi-assert joi-assert 是一个轻量级的 npm 包,它提供了一种方便的方式来测试 joi 验证器的行为。joi 是一个非常流行的 Node.js 库,用于数据验证和类型转换...

    4 年前
  • npm 包 @opencensus/web-types 使用教程

    介绍 @opencensus/web-types 是一个由 OpenCensus 提供的 JavaScript 库,旨在提供 TypeScript 类型支持,使得前端开发人员能够更轻松地使用 Open...

    4 年前
  • npm 包 @azure/core-tracing 使用教程

    简介 @azure/core-tracing 是 Microsoft Azure 提供的一个 npm 包,用于帮助开发人员在应用程序中实现分布式追踪。使用该包可以追踪分布式应用的各个部分,并分析它们之...

    4 年前

相关推荐

    暂无文章