title: How to auto-populate an abstract property?
body: <p>I have an existing abstract class, say <code>Vehicle</code> and I want to create an intermediate class to reduce repetition of abstract properties in my instantiatable classes.</p>
  <p>The problem:</p>
  <pre><code>abstract class Vehicle {
    abstract wheelCount: number
    abstract tireCount: number
  }
  
  class Car extends Vehicle {
    wheelCount = 4
    tireCount = 4 // Tire count is the same as wheel count
  }
  
  class Truck extends Vehicle {
    wheelCount = 4
    tireCount = 4 // Tire count is the same here too
  }
  
  class Bike extends Vehicle {
    wheelCount = 2
    tireCount = 2 // Tire count is the same - I really need to abstract this
  }
  
  </code></pre>
  <p>An invalid solution:</p>
  <pre><code>abstract class Vehicle {
    abstract wheelCount: number
    abstract tireCount: number
  }
  
  // I want an intermediate class like this
  abstract class StandardVehicle extends Vehicle {
    tireCount = wheelCount
  }
  
  class Car extends StandardVehicle {
    wheelCount = 4
  }
  
  class Truck extends StandardVehicle {
    wheelCount = 4
  }
  
  class Bike extends StandardVehicle {
    wheelCount = 2
  }
  
  </code></pre>
  <p>What are the valid solutions to this please?</p>
  <p>Please note, there are cases where <code>wheelCount</code> and <code>tireCount</code> will differ so I can't combine these properties in <code>Vehicle</code>.</p>