{"record":{"id":"9bcd4cae1c206218","repo":"TheAlgorithms/JavaScript","slug":"the-noname-should-be-number-type","errorCode":null,"errorMessage":"The ${noName} should be Number type","messagePattern":"The (.+?) should be Number type","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"Maths/Volume.js","lineNumber":117,"sourceCode":"*/\nconst volSphere = (radius) => {\n  isNumber(radius, 'Radius')\n  return (4 / 3) * Math.PI * radius ** 3\n}\n\n/*\n  Calculate the volume for a Hemisphere\n  Reference: https://www.cuemath.com/measurement/volume-of-hemisphere/\n  return (2 * PI * radius^3)/3\n*/\nconst volHemisphere = (radius) => {\n  isNumber(radius, 'Radius')\n  return (2.0 * Math.PI * radius ** 3) / 3.0\n}\n\nconst isNumber = (number, noName = 'number') => {\n  if (typeof number !== 'number') {\n    throw new TypeError('The ' + noName + ' should be Number type')\n  } else if (number < 0 || !Number.isFinite(number)) {\n    throw new Error('The ' + noName + ' only accepts positive values')\n  }\n}\n\nexport {\n  volCuboid,\n  volCube,\n  volCone,\n  volPyramid,\n  volCylinder,\n  volTriangularPrism,\n  volPentagonalPrism,\n  volSphere,\n  volHemisphere\n}\n","sourceCodeStart":99,"sourceCodeEnd":134,"githubUrl":"https://github.com/TheAlgorithms/JavaScript/blob/5c39e87a9a31f279c60f830ad74a845e4788a517/Maths/Volume.js#L99-L134","documentation":"Thrown by the shared `isNumber(number, noName)` helper used by every volume function (e.g. `volHemisphere(radius)`). It fires the TypeError branch when `typeof number !== 'number'`. The placeholder `${noName}` is filled with a label like 'Radius', 'Height', or the default 'number', identifying which argument was wrong.","triggerScenarios":"Call `volHemisphere('5')`, `volCuboid(null, 2, 3)`, `volSphere(undefined)`, `volCone(BigInt(3), 4)`. Any non-number argument to any `vol*` function triggers it with the appropriate label.","commonSituations":"Form or query-string inputs that arrive as strings, missing object fields passed via destructuring, or mixed BigInt/Number arithmetic from a parser.","solutions":["Coerce each dimension with `Number(...)` and verify `typeof === 'number'` upstream.","For string sources, `parseFloat` and confirm `Number.isFinite`.","Check every argument, not just the first - the label tells you which one failed."],"exampleFix":"// before\nvolHemisphere(formData.radius) // string '5'\n\n// after\nconst r = Number(formData.radius)\nif (typeof r !== 'number' || !Number.isFinite(r)) throw new TypeError('radius must be a number')\nvolHemisphere(r)","handlingStrategy":"type-guard","validationCode":"const dims = [length, width, height].map(Number)\nif (!dims.every((d) => typeof d === 'number' && Number.isFinite(d))) {\n  throw new TypeError('all dimensions must be finite numbers')\n}\nvolCuboid(...dims)","typeGuard":"const isNumber = (x) => typeof x === 'number'","tryCatchPattern":null,"preventionTips":["Coerce every dimension argument with Number() before calling vol*.","The error label (Radius/Height/etc.) tells you which arg failed - read it.","Validate at the form layer so strings never reach the function."],"tags":["type-validation","math","geometry","shared-helper"],"backgroundTag":null,"analyzedSha":"5c39e87a9a31f279c60f830ad74a845e4788a517","analyzedAt":"2026-08-13T04:54:54.474Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}