The typeof operator takes as argument a (literal) type (such as System.Int32), not a variable, and returns a object whose type is the (internal) System.RuntimeType.
I try to demonstrate that with the following simple example:
Because System.RuntimeType derives from System.Reflection.TypeInfo and System.RuntimeType is an internal type, the returned value should be considered a System.Reflection.TypeInfo.