Javascript有条件地调用链式方法



是否有机会有条件地运行链式方法?

我想把这个表达式简化为一行,但找不到在expect上阻塞.not.的解决方案。

const checkSomething = (element, value = true) => {
if (value) {
expect(element).toBeVisible()
} else {
expect(element).not.toBeVisible()
}
}

您可以使用立即调用的箭头函数来创建一个单行表达式:

const checkSomething = (element, value = true) => {
(e => value ? e : e.not)(expect(element)).toBeVisible()
}

这与基本相同

const checkSomething = (element, value = true) => {
const e = expect(element);
(value ? e : e.not).toBeVisible()
}

这不是一个可选的链接,但如果您将构造定义为

const expectMaybe = (arg, val) => val ? expect(arg) : expect(arg).not;

那么也许你可以把你的oneliner写成

const checkSomething = (element, value=true) => expectMaybe(element, value).toBeVisible();

您可以使用三元运算符。

const checkSomething = (element, value = true) => value ? expect(element).toBeVisible() : expect(element).not.toBeVisible()

最新更新