Я хочу иметь возможность передать тип (а не экземпляр типа) в качестве параметра, но я хочу применить правило, в котором тип должен расширять определенный базовый типТип TypeScript для типа, а не для экземпляра
Пример
abstract class Shape {
}
class Circle extends Shape {
}
class Rectangle extends Shape {
}
class NotAShape {
}
class ShapeMangler {
public mangle(shape: Function): void {
var _shape = new shape();
// mangle the shape
}
}
var mangler = new ShapeMangler();
mangler.mangle(Circle); // should be allowed.
mangler.mangle(NotAShape); // should not be allowed.
по существу я думаю, что нужно заменить shape: Function
с чем-то ... другое?
Возможно ли это с помощью TypeScript?
Примечание: TypeScript также должен признать, что shape
имеет конструктор по умолчанию. В C# я бы сделать что-то вроде этого ...
class ShapeMangler
{
public void Mangle<T>() where T : new(), Shape
{
Shape shape = Activator.CreateInstance<T>();
// mangle the shape
}
}