typescript – User-defined Type Guards – Using typeof

typeof is used when you need to distinguish between types number, string, boolean, and symbol. Other string constants will not error, but won’t be used to narrow types either.

Unlike instanceof, typeof will work with a variable of any type. In the example below, foo could be typed as number | string without issue.

This code (try it):

function example(foo: any) {
    if (typeof foo === "number") {
        // foo is type number in this block
        console.log(foo + 100);
    }

    if (typeof foo === "string") {
        // fooi is type string in this block
        console.log("not a number: " + foo);
    }
}

example(23);
example("foo");

prints

123
not a number: foo

if you want to reproduce, please indicate the source:
typescript – User-defined Type Guards – Using typeof - CodeDay