What is TypeError in JavaScript

In JavaScript, TypeError is a built-in error object that is thrown when a value is not of the expected type. This error occurs when an operation is performed on a value incompatible with the operation’s expected data type.

Syntax

new TypeError([message[, fileName[, lineNumber]]])

Parameters

All the parameters are optional.

The message is a Human-readable description of the error.

The filename is the file’s name containing the code that caused the exception.

The lineNumber is the line number of the code that caused the exception.

let num = 11;
try {
  num.toUpperCase();
}
catch (err) {
  console.log(err)
}

Output

TypeError: num.toUpperCase is not a function
 at Object.<anonymous> (/Users/krunal/Desktop/code/node-examples/es/app.js:3:7)
 at Module._compile (internal/modules/cjs/loader.js:722:30)
 at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
 at Module.load (internal/modules/cjs/loader.js:620:32)
 at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
 at Function.Module._load (internal/modules/cjs/loader.js:552:3)
 at Function.Module.runMain (internal/modules/cjs/loader.js:775:12)
 at startup (internal/bootstrap/node.js:300:19)
 at bootstrapNodeJSCore (internal/bootstrap/node.js:826:3)

We got the error like TypeError: num.toUpperCase is not a function

In this example, we are trying to convert a number to a string, which is impossible; that is why we catch the TypeError.

If you add 11 and H in JavaScript or when you try to perform operations on two operands of unmatched types, JavaScript throws a TypeError.

We can get the name of the error using the error.name property.

let num = 11;

try {
  num.toUpperCase();
}

catch (err) {
  console.log(err.name)
}

Output

TypeError

TypeError Methods

The global TypeError contains no functions; however, it inherits some methods through a prototype chain.

TypeError Properties

There are the following properties of TypeError.

TypeError.prototype.constructor

It specifies a function that created the instance’s prototype.

TypeError.prototype.message

It gives the Error message. Although ECMA-262 specifies that TypeError should provide its message property,

SpiderMonkey inherits Error.prototype.message.

TypeError.prototype.name

It gives the Error name. Inherited from Error.

TypeError.prototype.fileName

It gives the path to the file that raised this error. Inherited from Error.

TypeError.prototype.lineNumber

It gives a line number in the file that raised this error. Inherited from Error.

TypeError.prototype.columnNumber

It gives column numbers in the line that raised this error. Inherited from Error.

TypeError.prototype.stack

It gives Stack a trace. Inherited from Error.

let num = 11;

try {
  num.toUpperCase();
}
catch (err) {
  console.log(err.message)
  console.log(err.stack)
  console.log(err.name)
}

Output

num.toUpperCase is not a function
TypeError: num.toUpperCase is not a function
 at Object.<anonymous> (/Users/krunal/Desktop/code/node-examples/es/app.js:3:7)
 at Module._compile (internal/modules/cjs/loader.js:722:30)
 at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
 at Module.load (internal/modules/cjs/loader.js:620:32)
 at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
 at Function.Module._load (internal/modules/cjs/loader.js:552:3)
 at Function.Module.runMain (internal/modules/cjs/loader.js:775:12)
 at startup (internal/bootstrap/node.js:300:19)
 at bootstrapNodeJSCore (internal/bootstrap/node.js:826:3)

How to Fix Uncaught TypeError: Cannot Set a Property

The “Uncaught TypeError: Cannot Set a Property” error occurs in JavaScript when you try to set a value for a property that does not exist or cannot be modified.

Here are some steps you can take to fix this error:

  1. Check if the property exists: Make sure the property you are trying to set exists in the object. If it doesn’t, you will need to add it first before setting its value.

  2. Check if the property is read-only: Some objects’ properties are read-only and cannot be modified. If you try to set a value for a read-only property, you will get this error. Check the documentation for the object you are working with to see if the property is read-only.
  3. Use the correct syntax: Make sure you are using the correct syntax for setting the property value. For example, if you are working with an array, you should use the index number to set the value for a specific element. If you are working with an object, you should use dot or bracket notation to set the value for a specific property.

  4. Check the scope: Make sure the object you are working with is in scope. If the object is not in scope, you may be unable to set its properties. Check the code to see if the object has been declared and initialized properly.
  5. Use the correct data type: Make sure that the value you are trying to set for the property is of the correct data type. For example, if the property expects a string value, you cannot set it to a number or a boolean.
  6. Use try-catch blocks: You can use try-catch blocks to handle the error if you cannot fix the problem. This will allow you to catch the error and handle it gracefully instead of crashing the program.
The toString() is a built-in JavaScript function that converts a number into a string first, and then you can convert that string to upper-case characters using the toUpperCase() function.
let num = 11;

try {
  num.toString().toUpperCase(); 
}
catch (err) {
  console.log(err.message);
}

It won’t give any errors. Instead, it solved TypeError by converting the number to a string.

Javascript TypeError is not a function

Let’s take a scenario where you defined a variable and then call that variable a function that causes this TypeError.

let num = 11;

try {
  num();
}
catch (err) {
  console.log(err.message);
}

Output

num is not a function

You can only call functions in JavaScript. However, you can call the Object properties.

TypeError: is not a constructor

JavaScript built-in function objects not identified as constructors that do not implement the [[Construct]] internal method unless specified in the description of the specific function.

That’s it.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.