Using the `new` operator with `Symbol` and `BigInt` will throw a `TypeError` because they are not intended to be used as constructors. `Symbol` and `BigInt` are primitive types in JavaScript and should be used as such.
This is different from the other primitive types, such as string, number or boolean, where it was possible to call global `String` or `Number` as functions that return primitive types, but also use them as constructors with the `new` operator to create wrapper objects. This confusing double behavior is not implemented for `Symbol` and `BigInt` types that were introduced later in the language.
This behavior would be especially problematic for symbols that have reference identity and already behave like objects in some way. For example, they are garbage collectable and therefore can be used as keys in WeakMap and WeakSet objects.