TheAlgorithms/JavaScript · error · TypeError

Argument is not a string type

Error message

Argument is not a string type

What it means

Thrown by hexToBinary when hexString is not of type 'string'. This is the first guard in the function and runs before the hex-validity regex. It is a TypeError (not a plain Error) because the contract is about the argument type, not its content.

Solutions

  1. Coerce to string with String(...) only if the value is genuinely hex text, e.g. String(hexValue).
  2. If you have a Buffer/Uint8Array, convert with buf.toString('hex') first.
  3. Add a typeof hexString === 'string' guard in the caller and surface a clearer error.

Example fix

// before
hexToBinary(someBuffer)
// after
hexToBinary(someBuffer.toString('hex'))
Defensive patterns

Strategy: type-guard

Validate before calling

if (typeof hexString !== 'string') {
  throw new TypeError('hexString must be a string')
}
hexToBinary(hexString)

Type guard

const isString = (x) => typeof x === 'string'

Try / catch

try {
  hexToBinary(hexString)
} catch (e) {
  if (e instanceof TypeError && /not a string type/.test(e.message)) {
    return hexToBinary(String(hexString))
  }
  throw e
}

Prevention

When it happens

Trigger: Calling hexToBinary(255), hexToBinary(null), hexToBinary(['a','b']), or hexToBinary(Buffer.from('ab','hex')) — none of these are strings.

Common situations: Passing a Node.js Buffer or Uint8Array thinking it is a string; feeding a parsed JSON number; forgetting to coerce a DOM input value; defaulting the argument to undefined.

Related errors


AI-assisted analysis of TheAlgorithms/JavaScript@5c39e87a9a (2026-08-13). Data as JSON: /api/errors/63b66b150b37165c. Report an issue: GitHub.

Appendix: source

Thrown at Conversions/HexToBinary.js:23

    2: '0010',
    3: '0011',
    4: '0100',
    5: '0101',
    6: '0110',
    7: '0111',
    8: '1000',
    9: '1001',
    a: '1010',
    b: '1011',
    c: '1100',
    d: '1101',
    e: '1110',
    f: '1111'
  })[key.toLowerCase()] // select the binary number by valid hex key with the help javascript object

const hexToBinary = (hexString) => {
  if (typeof hexString !== 'string') {
    throw new TypeError('Argument is not a string type')
  }

  if (/[^\da-f]/gi.test(hexString)) {
    throw new Error('Argument is not a valid HEX code!')
  }
  /*
    Function for converting Hex to Binary

    1. We convert every hexadecimal bit to 4 binary bits
    2. Conversion goes by searching in the lookup table
  */

  return hexString.replace(/[0-9a-f]/gi, (lexeme) => binLookup(lexeme))
}

export default hexToBinary

View on GitHub (pinned to 5c39e87a9a)