“ ||”的意外组合和“ &&”(使用babel

时间:2019-06-12 12:32:12

标签: javascript reactjs npm babeljs babel

我正在尝试构建软件包并将其发布到npm,并且我正在使用babel。但是在建造时,它向我显示了此警告:

  

第1行:“严格”模块内部不需要“严格使用”

     

第23行:“ ||”的意外混合和“ &&”无混合运算符

这是我的方法:

function required(value) {
  if (
    value === null ||
    value === undefined ||
    ("string" === typeof value && value.trim().length === 0) ||
    value.length === 0
  )
    return false;
  return true;
}

以下是其转换方式:

function required(value) {
  if (value === null || value === undefined || "string" === typeof value && value.trim().length === 0 || value.length === 0) return false;
  return true;
}

我不会删除()内的"string" === typeof value && value.trim().length === 0,而是在每个if else块内这样做

这是我的babel.config.js

module.exports = function(api){
    api.cache(true);

    const presets = [ "@babel/preset-env", "@babel/preset-react" ];
    const plugins = [ ];

    return {
        presets,
        plugins
    };
}

这是我的package.json

{
  "scripts": {
    "prepublishOnly": "babel ./src --out-dir ./dist -s inline"
  },
  "devDependencies": {
    "@babel/cli": "^7.4.4",
    "@babel/core": "^7.4.5",
    "@babel/preset-env": "^7.4.5",
    "@babel/preset-react": "^7.0.0",
    "moment": "^2.24.0",
    "react-dom": "^16.8.6"
  },
  "dependencies": {},
  "peerDependencies": {
    "react": "^16.8.6"
  },
  "files": [
    "dist/*"
  ]
}

1 个答案:

答案 0 :(得分:1)

Babel就在这里:由于operator precedence不需要括号,&&的优先级高于||

林特尔(Linter)可以正确地表示此代码不可读。

但是Babel的输出并不适合您的人眼或短毛猫,而是针对浏览器。

别把巴别塔的产值掉下来。该错误在您的构建链中。

旁注:您可以替换

if (a) return false;
return true;

使用

return !a;