JavaScript相当于Guava的前置条件?

时间:2013-09-13 11:49:16

标签: javascript guava

在Java中,我使用Google Guava检查preconditions

public Port getPublishedPort(Port port) {
    checkArgument(port.isPublishedPort(), "Given port %s is not a published port.", port);

JavaScript中是否有相同的内容?

4 个答案:

答案 0 :(得分:5)

看看这个模块,让我知道它是否符合您的需求。

https://www.npmjs.org/package/preconditions

答案 1 :(得分:1)

不,但你可以自己编写:

var Preconditions = {
  checkArgument: function(condition, message) {
    if (!condition) {
      throw Error('IllegalArgumentException: ' + (message || ''));
    }
  }
}

并在您的业务逻辑中

function getPublishedPort(port) {
  Preconditions.checkArgument(port.isPublishedPort(), 'Given port is not a published port.');
  // ... Business logic ...
}

虽然我猜它不能用懒惰评估进行格式化。

答案 2 :(得分:1)

我最近为JavaScript编写了一个名为condicio的Preconditions版本。它与Guava的Preconditions非常相似,但是它为JavaScript添加了一些功能。

答案 3 :(得分:0)

我创作了Requirements.js。用法如下:

import {requireThat} from "@cowwoc/requirements/es6/node/DefaultRequirements.js"

class Player
{
  constructor(name, age)
  {
    requireThat(name, "name").isNotNull().asString().length().isBetween(1, 30);
    requireThat(age, "age").asNumber().isBetween(18, 30);
  }
}

主要重点是可读性。输出结果如下:

RangeError: age must be in range [18, 30).
Actual: 15

欢迎您的反馈。