The typeof operator returns a string indicating the type of the operand, aka, the entity being type-checked.
console.log(typeof 1); // => "number"
This is a great way to safely check for the existence of a variable that might not exist. For example, modern JS/TS uses Server-Side Rendering (SSR). That means the window and document don't yet exist. Something like,
window.onload = () => ... would cause a server-side failure, since
window is not yet defined. Wrapping the call in
if (window) ... does not solve the problem because the successful evaluation of the if-clause requires evaluating
window, which is still undefined. This is why
typeof is so useful in this scenario
if (typeof window != 'undefined') ...
One final gotcha,
!!(typeof window) == !!'undefined' == true. That is,
'undefined' is a string, not an empty, falsey string, a truthy string. You need to explicitly compare again the string
'undefined' for the guard clause to succeed.