namespace OverridingAMethodWithASubtypeAsReturnType { class Shape { } declare const TriangleType ; class Triangle extends Shape { [ TriangleType ] : void ; } class ShapeMaker { make ( ) { return new Shape ( ) ; } } class TriangleMaker extends ShapeMaker { make ( ) { return new Triangle ( ) ; } } }