15

在 Java 中,我使用 Google Guava检查我的先决条件:

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

JavaScript中是否有与此等价的功能?

4

4 回答 4

7

Node.js前置条件库被称为具有用于前置条件检查的类似 Guava 的 API。

在 Node.js 中支持 Guava,例如 Precondition 错误检查

new InstanceValidator(port).checkArgument(
        "publishedPort", "Given port %s is not a published port.", [port]);
于 2014-06-02T12:42:19.753 回答
3

我编写了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

我欢迎您的反馈。

于 2019-08-12T02:41:26.680 回答
2

不,但你可以自己写:

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 ...
}

虽然我猜它不能为你做惰性评估的格式化。

于 2013-10-13T04:59:41.197 回答
1

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

于 2014-06-16T22:28:06.277 回答