npm 包 by-contract 使用教程

阅读时长 4 分钟读完

什么是 by-contract?

by-contract 是一个用于 JavaScript 应用程序的协定库,它允许开发者编写参数和返回值的契约,从而能够更精确、更可靠地编写防御式编程。

by-contract 遵循设计契约模式的三个主要原则:

  • 保证先决条件被满足,即在执行函数之前确保参数符合函数参数定义,也称为“输入合同”
  • 保证后置条件得到满足,即确保函数返回符合函数定义的且是开发者期望的类型,也称为“输出合同”
  • 在代码中对函数的调用处, 进行契约验证。

使用 by-contract,我们可以像下面这样的方式来编写函数:

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

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

  ------ - - --
-
展开代码

上述代码中,我们使用 by-contract 来验证 divide 函数的参数类型为数字,并希望返回浮点数类型。如果在执行过程中发现参数类型不正确,by-contract 将会抛出异常。

开始使用 by-contract

安装

by-contract 可以通过 npm 下载安装,运行以下命令:

然后你就可以在你的代码中引入 by-contract:

基本用法

下面我们来看一个简单的例子:编写一个将两个数字相加的函数。

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

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

  ------ - - --
-
展开代码

在上述代码中,我们使用 by-contract 来验证 add 函数的参数为数字,返回值为数字。在执行过程中,如果参数不符合类型限制,则会抛出异常。

复杂用法

除了简单用法外,by-contract 还支持多个参数和返回值,并且可以在契约中添加条件。

多个参数的契约

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

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

  ------ -
    ----- -----
    ---- ---
  --
-
展开代码

上述代码中,我们定义 makePerson 函数要求两个参数分别为字符串和数字,并将返回值声明为包含 nameage 两个成员的对象。

条件契约

可以通过 .where() 方法在契约中添加条件:

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

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

  ------ - - --
-
展开代码

上述代码会在契约中添加一个条件,即验证返回值必须等于两个参数相加。

总结

by-contract 让我们可以更好地编写防御式编程。使用 by-contract,我们可以为函数设定契约限制其参数和返回值,从而确保代码的可靠性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d2181e8991b448dad43

纠错
反馈

纠错反馈