code: function getApparentType(type) {
              if (type.flags & 16384 /* TypeParameter */) {
                  type = getApparentTypeOfTypeParameter(type);
              }
              if (type.flags & 34 /* StringLike */) {
                  type = globalStringType;
              }
              else if (type.flags & 340 /* NumberLike */) {
                  type = globalNumberType;
              }
              else if (type.flags & 136 /* BooleanLike */) {
                  type = globalBooleanType;
              }
              else if (type.flags & 512 /* ESSymbol */) {
                  type = getGlobalESSymbolType();
              }
              return type;
          }
docs: For a type parameter, return the base constraint of the type parameter. For the string, number,
  boolean, and symbol primitive types, return the corresponding object types. Otherwise return the
  type itself. Note that the apparent type of a union type is the union type itself.