In the specific case of throw, throw new() is a shorthand for throw new Exception(). The feature was introduced in c# 9 and you can find the documentation as Target-typed new expressions. As you can see, there are quite a few places where it can be used (whenever the type to be created can be inferred) to make code shorter. The place where I like it the most is for fields/properties:
new operator - What is new without type in C#? - Stack Overflow
The new operator uses the internal [[Construct]] method, and it basically does the following: Initializes a new native object Sets the internal [[Prototype]] of this object, pointing to the Function prototype property. If the function's prototype property is not an object (a primitive values, such as a Number, String, Boolean, Undefined or Null), Object.prototype is used instead. After ...
new() describes a constructor signature in typescript. What that means is that it describes the shape of the constructor. For instance take {new(): T; }. You are right it is a type. It is the type of a class whose constructor takes in no arguments. Consider the following examples
The difference between the two is that operator new just allocates raw memory, nothing else. The new operator starts by using operator new to allocate memory, but then it invokes the constructor for the right type of object, so the result is a real live object created in that memory.