JavaScript相当于Guava的前置条件?

Fre*_*rik 10 javascript guava

在Java中,我使用Google Guava 检查我的前提条件:

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

在JavaScript中是否有相同的功能?

Gil*_*ili 7

我编写了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);
  }
}
Run Code Online (Sandbox Code Playgroud)

主要关注点是可读性。输出如下所示:

RangeError: age must be in range [18, 30).
Actual: 15
Run Code Online (Sandbox Code Playgroud)

我欢迎您的反馈。


CBP*_*CBP 5

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

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


Yun*_*chi 1

不,但你可以自己写:

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

并在你的业务逻辑中

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

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