DEV Community

Cover image for How to get or access the properties and methods of body HTML element tags without errors in TypeScript?
MELVIN GEORGE
MELVIN GEORGE

Posted on • Originally published at melvingeorge.me

How to get or access the properties and methods of body HTML element tags without errors in TypeScript?

Originally posted here!

To get or access the properties and methods of the body HTML element tags without having errors or red squiggly lines in TypeScript, you have to assert the type for the body HTML element tag using the HTMLBodyElement interface in TypeScript.

The errors or warnings are shown by the TypeScript compiler since the compiler doesn't know more information on the body HTML element tag ahead of time. But we know that we are referencing the body HTML tag and thus we can tell the compiler to use the HTMLBodyElement interface which contains the declarations for properties and methods.

TL;DR

// get reference to the first 'body'
// HTML element tag in the document
// with type assertion using the HTMLBodyElement interface
const bodyTag = document.querySelector("body") as HTMLBodyElement;

// no errors or red squiggly lines will be
// shown while accessing properties or methods
// since we have asserted the type
// for the 'body' HTML element tag ๐Ÿ˜
const id = bodyTag.id;
Enter fullscreen mode Exit fullscreen mode

To understand it better let's say we are selecting the first body HTML element tag using the document.querySelector() method like this,

// get reference to the first 'body'
// HTML element tag in the document
const bodyTag = document.querySelector("body");
Enter fullscreen mode Exit fullscreen mode

Now let's try to get the value of a property called id which is used in the body HTML element tag as an attribute.

It can be done like this,

error while accessing the id property in the body HTML element tag

As you can see that the TypeScript compiler is showing a red squiggly line below the bodyTag object. If you hover over the bodyTag you can see an error saying Object is possibly 'null'. This is because TypeScript is not sure whether the bodyTag object will have properties and methods ahead of time.

Now to avoid this error we can assert the type for the body HTML element tag using the HTMLBodyElement interface in TypeScript.

To do Type assertion we can use the as keyword after the document.querySelector("body") method followed by writing the interface name HTMLBodyElement.

It can be done like this,

// get reference to the first 'body'
// HTML element tag in the document
// with type assertion using the HTMLBodyElement interface
const bodyTag = document.querySelector("body") as HTMLBodyElement;

// no errors or red squiggly lines will be
// shown while accessing properties or methods
// since we have asserted the type
// for the 'body' HTML element tag ๐Ÿ˜
const id = bodyTag.id;
Enter fullscreen mode Exit fullscreen mode

Now if hover over the id property in the bodyTag object TypeScript shows more information about the property itself which is again cool and increases developer productivity and clarity while coding.

more information about the id property in the body HTML element tag

See the above code live in codesandbox.

That's all ๐Ÿ˜ƒ!

Feel free to share if you found this useful ๐Ÿ˜ƒ.


Top comments (0)