В JavaScript я могу определить функцию-конструктор, которая может быть вызвана с помощью или без new
:
function MyClass(val) {
if (!(this instanceof MyClass)) {
return new MyClass(val);
}
this.val = val;
}
Затем я могу построить объекты MyClass
, используя одно из следующих утверждений:
var a = new MyClass(5);
var b = MyClass(5);
Я попытался достичь аналогичного результата с помощью класса TypeScript ниже:
class MyClass {
val: number;
constructor(val: number) {
if (!(this instanceof MyClass)) {
return new MyClass(val);
}
this.val = val;
}
}
Но вызов MyClass(5)
дает мне ошибку Value of type 'typeof MyClass' is not callable. Did you mean to include 'new'?
Есть ли способ заставить этот шаблон работать в TypeScript?