代码之家  ›  专栏  ›  技术社区  ›  Jim

ESLint:为什么没有未使用的表达式失败?

  •  1
  • Jim  · 技术社区  · 1 年前

    在我的代码中,我有一系列三元运算符,它们使用加法/减法赋值运算符来修改与SVG中元素的像素位置相对应的变量的值。

    以下是一些表达式示例:

    target === 'L' ? (endX -= edgeShift) : (endX += edgeShift);
    source === 'L' ? (startX += halfSize) : (startX -= halfSize);
    target === 'T' ? (endY -= edgeShift) : (endY += (edgeShift + 12));
    

    我的短毛犯了错误 @typescript-eslint/no-unused-expressions 。从我对 documentation for the rule 看起来三元运算符的每一边都会修改程序的状态,所以我认为它不会失败。

    我看不到什么 "allowTernary" 也设置了,并且示例使其不清楚当其为false时的预期行为。

    既然我认为这是我的问题,1)是什么原因导致的?2) 有没有一种方法可以在不修改配置的情况下在一行中完成这项工作?我宁愿不使用带有if/else的两行,因为这会损害可读性。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Alexander O'Mara    1 年前

    我想 allowTernary false 在您的情况下,期望使用if/else块,而不是未赋值的三元表达式。

    不过,你可以试试这样的方法。

    endX += target === 'L' ? -edgeShift : edgeShift;
    startX += source === 'L' ? halfSize : -halfSize;
    endY += target === 'T' ? -edgeShift : (edgeShift + 12);