Currently it’s best practice to use .isMesh and similar properties to see what an object is. I don’t recall why that is, as opposed to using instanceof. There may be a few cases where the class hierarchy is non-obvious.
Butt as @Mugen87’s question suggests, it sounds like maybe there are two copies of three.js on your page? In that case comparing an instance from one copy to a constructor from the other will always fail. Always using the official three npm package and loaders/controls/subpackages from its examples/* folder should avoid that.
Aside: I wonder if we could ask the three-gltf-loader maintainer, and maintainers of similar packages, to mark them as deprecated (npm has a feature for this) now that threejs provides modules and typings?