Node.js 使い始めて数カ月がたちます。今まではブラウザで動く、生の JavaScript しか書いたことないので、覚えることが多くて困っています。最近はテストの自動化に手を付け始めて、テスト自動化のついでに eslint も導入してみたのですが、エラーが出まくる出まくる・・・。(300行くらいでエラー200件)
基本は簡単につぶせるのですが困ったのが次の2つ。
let inputValue = ['tori'];
let allowedValue = [
'kuma',
'neko',
];
if (inputValue.length === 0) { // error No magic number: 0 no-magic-numbers
throw new Error("空だよ!");
}
// true になる
let error = inputValue.some((value) => {
if (allowedValue.indexOf(value) === -1) { // error No magic number: -1 no-magic-numbers
return true;
}
return false;
});
配列の length と indexOf のチェックですね。indexOf は includes で置き換え可能なのでいいですが、length の方はわざわざ 0 を定数定義するのもなんかなーといった感じです。
結局以下のような感じにしましたが、なんか微妙です。
let inputValue = ['tori'];
const allowedValue = [
'kuma',
'neko',
];
if (!inputValue.length) { // int からの暗黙的型変換が・・・
throw new Error("空だよ!");
}
// true になる
let error = inputValue.some((value) => {
if (!allowedValue.includes(value)) { // === false でもいいかも
return true;
}
return false;
});