Вы не можете использовать функцию стрелки для конструктора, и это не имеет смысла.
По определению, функция стрелки берет свое значение this
из лексического контекста. Следовательно, он не будет иметь значения this
от нового объекта, поэтому он не работает как конструктор.
Из-за этого интерпретатор даже не позволяет вам попытаться сгенерировать TypeError, потому что вы не передаете соответствующий тип функции конструктора в new
.
Помните, что функции стрелок - это не просто синтаксические ярлыки, они вызывают разницу в поведении со значением this
, и это различие подходит только в некоторых случаях.
Возможно, вы захотите прочитать эту статью, которая объясняет далее: Когда не использовать функции стрелок .
Внутренний для реализации Javascript, конструктор должен быть объектом типа Function определенного типа, который имеет различные внутренние методы, такие как [[Construct]]
, а функция стрелки не имеет этих внутренних свойств. Таким образом, когда вы пытаетесь вызвать new
, интерпретатор обнаруживает, что вы не передаете правильный тип функции new
, и, таким образом, он создает ошибку во время выполнения.