JSFiddle - React, Tailwind, and code Playground

JavaScript

const checkEqual = function(a, b) {
  if (a !== b) {
    throw new Error('Error:' + message);
  }
}
 
/* const isNumber = function(value) {
  return ((typeof value === 'number') && (isFinite(value)));
}; */
const isNumber = (value) => {
  return Number.isFinite(value);
}
 
checkEqual(true, isNumber(123)); // 数値は数値
checkEqual(true, isNumber(0));
checkEqual(true, isNumber(-1));
checkEqual(true, isNumber(123.4)); // 実数も数値
checkEqual(true, isNumber(123.0));
checkEqual(true, isNumber(10e+3)); // 特殊な記法でも数値
checkEqual(true, isNumber(10e-3));
checkEqual(true, isNumber(020)); // 8進数記法でも数値
checkEqual(true, isNumber(0xFF)); // 16進数記法でも数値
checkEqual(false, isNumber(true)); // Booleanは数値ではない
checkEqual(false, isNumber(false));
checkEqual(false, isNumber(null)); // null は数値ではない
checkEqual(false, isNumber(undefined)); // undefinde も数値ではない
checkEqual(false, isNumber(Infinity)); // Infinity という特殊な数値型の値は Number ではないとしておく
checkEqual(false, isNumber(NaN)); // NaN という特殊なという特殊な数値型の値は Number ではないとしておく
checkEqual(false, isNumber('')); // 文字は数値ではない
checkEqual(false, isNumber('ABC'));
checkEqual(false, isNumber('ABC10'));
checkEqual(false, isNumber('10ABC'));
checkEqual(false, isNumber('0ABC'));
checkEqual(false, isNumber('0')); // 文字列は数値に変換可能だとしても文字列なので数値ではない
checkEqual(false, isNumber('5'));
checkEqual(false, isNumber('-5'));
checkEqual(false, isNumber('100'));
checkEqual(false, isNumber('-100'));
checkEqual(false, isNumber('10e+3'));
checkEqual(false, isNumber('10e-3'));
checkEqual(false, isNumber('020'));
checkEqual(false, isNumber('0xFF'));
checkEqual(false, isNumber([])); // 配列は数値ではない
checkEqual(false, isNumber([1]));
checkEqual(false, isNumber({})); // オブジェクトは数値ではない
checkEqual(false, isNumber({ 1: 1}));

alert('test finish');