function ToPrimitive(input, PreferredType) {
            switch (Type(input)) {
                case 0 /* Undefined */: return input;
                case 1 /* Null */: return input;
                case 2 /* Boolean */: return input;
                case 3 /* String */: return input;
                case 4 /* Symbol */: return input;
                case 5 /* Number */: return input;
            }
            var hint = PreferredType === 3 /* String */ ? "string" : PreferredType === 5 /* Number */ ? "number" : "default";
            var exoticToPrim = GetMethod(input, toPrimitiveSymbol);
            if (exoticToPrim !== undefined) {
                var result = exoticToPrim.call(input, hint);
                if (IsObject(result))
                    throw new TypeError();
                return result;
            }
            return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint);
        }
function ToPrimitive(input, PreferredType) {
            switch (Type(input)) {
                case 0 : return input;
                case 1 : return input;
                case 2 : return input;
                case 3 : return input;
                case 4 : return input;
                case 5 : return input;
            }
            var hint = PreferredType === 3  ? "string" : PreferredType === 5  ? "number" : "default";
            var exoticToPrim = GetMethod(input, toPrimitiveSymbol);
            if (exoticToPrim !== undefined) {
                var result = exoticToPrim.call(input, hint);
                if (IsObject(result))
                    throw new TypeError();
                return result;
            }
            return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint);
        }
function ToPrimitive ( input , PreferredType ) { switch ( Type ( input ) ) { case 0 /* Undefined */ : return input ; case 1 /* Null */ : return input ; case 2 /* Boolean */ : return input ; case 3 /* String */ : return input ; case 4 /* Symbol */ : return input ; case 5 /* Number */ : return input ; } var hint = PreferredType === 3 /* String */ ? "string" : PreferredType === 5 /* Number */ ? "number" : "default" ; var exoticToPrim = GetMethod ( input , toPrimitiveSymbol ) ; if ( exoticToPrim !== undefined ) { var result = exoticToPrim . call ( input , hint ) ; if ( IsObject ( result ) ) throw new TypeError ( ) ; return result ; } return OrdinaryToPrimitive ( input , hint === "default" ? "number" : hint ) ; }
7.1 Type Conversion https://tc39.github.io/ecma262/#sec-type-conversion 7.1.1 ToPrimitive(input [, PreferredType]) https://tc39.github.io/ecma262/#sec-toprimitive
7 . 1 Type Conversion https : // tc39 . github . io / ecma262 / #sec - type - conversion 7 . 1 . 1 ToPrimitive ( input [ PreferredType ] ) https : // tc39 . github . io / ecma262 / #sec - toprimitive