title: Typescript - call abstract method from abstract constructor or provide equivalent functionality
body: <p><s> In Typescript - abstract methods cannot be called from within abstract constructors (the code will compile, but will crash at runtime).
  </s></p>
  
  <p>Take the following example where the code crashes:</p>
  
  <pre><code>abstract class Puzzle {
  
  
      addState = () =&gt; {
           let data = this.createStateData()
           //Perform a operation with data 
      }
  
      abstract createStateData: () =&gt; Object
  
      protected constructor() {
          //The code crashes here because createStateData
          //has not been defined yet
          this.addState()
       }
  
  }
  
  class RiverPuzzle extends Puzzle {
  
      createStateData = (): Object =&gt; {
           return 'Foo'
      }
  
      constructor() { 
          super()
          //this.addState()
      }
  
  }
  </code></pre>
  
  <p>In this particular example, the problem can be solved by uncommenting the line in the constructor of the <code>RiverPuzzle</code> class and commenting the offending line in the constructor of the abstract class.</p>
  
  <p>However, the solution is suboptimal because there are many classes extending the abstract class <code>Puzzle</code> and I don't want to manually add <code>this.addState()</code> to the constructor of every single subclass.</p>
  
  <p>What is a more efficient alternative?</p>