FWIW, it would really be nice if this was called IsInstance[...]; I feel like that would neatly encapsulate its meaning to both old and new, that it's just a yes/no on whether this is an instance of [...]. TypeScript has the concept of a type guard but doesn't use that name in code, so there's no reason to be wedded to it.