title: TypeError: Class extends value undefined is not a function or null
body: <p>I am getting the following error when trying to create these entities.</p>
  
  <p><code>TypeError: Class extends value undefined is not a function or null</code></p>
  
  <p>I am assuming this has something to do with circular dependencies, but how is that supposed to be avoided when using table inheritance and one to many relationships?</p>
  
  <p>It is complaining about the following javascript at <code>BaseComic_1.BaseComic</code>.</p>
  
  <p><strong><code>let Variant = class Variant extends BaseComic_1.BaseComic {</code></strong></p>
  
  <p>Here is the complete file.</p>
  
  <pre><code>"use strict";
  var __decorate = (this &amp;&amp; this.__decorate) || function (decorators, target, key, desc) {
      var c = arguments.length, r = c &lt; 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
      if (typeof Reflect === "object" &amp;&amp; typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
      else for (var i = decorators.length - 1; i &gt;= 0; i--) if (d = decorators[i]) r = (c &lt; 3 ? d(r) : c &gt; 3 ? d(target, key, r) : d(target, key)) || r;
      return c &gt; 3 &amp;&amp; r &amp;&amp; Object.defineProperty(target, key, r), r;
  };
  var __metadata = (this &amp;&amp; this.__metadata) || function (k, v) {
      if (typeof Reflect === "object" &amp;&amp; typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  const typeorm_1 = require("typeorm");
  const Comic_1 = require("./Comic");
  const BaseComic_1 = require("./BaseComic");
  let Variant = class Variant extends BaseComic_1.BaseComic {
  };
  __decorate([
      typeorm_1.ManyToOne(type =&gt; Comic_1.Comic, comic =&gt; comic.variants),
      __metadata("design:type", Comic_1.Comic)
  ], Variant.prototype, "comic", void 0);
  Variant = __decorate([
      typeorm_1.ClassEntityChild()
  ], Variant);
  exports.Variant = Variant;
  //# sourceMappingURL=Variant.js.map
  </code></pre>
  
  <hr>
  
  <pre><code>import {Entity, Column, PrimaryGeneratedColumn, OneToMany} from "typeorm";
  import {Comic} from "./Comic";
  
  @Entity()
  export class Series {
  
      @PrimaryGeneratedColumn()
      public id: number;
  
      @Column("text", {
          length: 30
      })
      public copyright: string;
  
      @Column("text", {
          length: 100
      })
      public attributionText: string;
  
      @Column("text", {
          length: 150
      })
      public attributionHTML: string;
  
      @Column("text", {
          length: 50
      })
      public etag: string;
  
      @Column("text", {
          length: 200
      })
      public title: string;
  
      @Column("text")
      public description: string;
  
      @Column("number", {
          length: 4
      })
      public startYear: number;
  
      @Column("number", {
          length: 4
      })
      public endYear: number;
  
      @Column("text", {
          length: 20
      })
      public rating: string;
  
      @Column("text", {
          length: 20
      })
      public type: string;
  
      @Column("text")
      public thumbnail: string;
  
      @OneToMany(type =&gt; Comic, comic =&gt; comic.series)
      public comics: Array&lt;Comic&gt;;
  }
  </code></pre>
  
  <hr>
  
  <pre><code>import {Entity, TableInheritance, PrimaryGeneratedColumn, Column, ManyToOne, DiscriminatorColumn} from "typeorm";
  import {Series} from "./Series";
  
  @Entity()
  @TableInheritance("class-table")
  @DiscriminatorColumn({ name: "type", type: "string"})
  export class BaseComic {
  
      @PrimaryGeneratedColumn()
      public id: number;
  
      @Column("text", {
          length: 30
      })
      public copyright: string;
  
      @Column("text", {
          length: 100
      })
      public attributionText: string;
  
      @Column("text", {
          length: 150
      })
      public attributionHTML: string;
  
      @Column("text", {
          length: 50
      })
      public etag: string;
  
      @Column("text", {
          length: 200
      })
      public title: string;
  
      @Column("int")
      public issue: number;
  
      @Column("text")
      public variantDescription: string;
  
      @Column("boolean")
      public variant: boolean;
  
      @Column("text")
      public description: string;
  
      @Column("int")
      public pageCount: number;
  
      @Column("date")
      public onSaleDate: Date;
  
      @Column("date")
      public unlimitedDate: Date;
  
      @Column("text")
      public thumbnail: string;
  
      @ManyToOne(type =&gt; Series, series =&gt; series.comics)
      public series: Series;
  }
  </code></pre>
  
  <hr>
  
  <pre><code>import {OneToMany, ClassEntityChild} from "typeorm";
  import {Variant} from "./Variant";
  import {BaseComic} from "./BaseComic";
  
  @ClassEntityChild()
  export class Comic extends BaseComic {
  
      @OneToMany(type =&gt; Variant, variant =&gt; variant.comic)
      public variants: Variant[];
  }
  </code></pre>
  
  <hr>
  
  <pre><code>import {ManyToOne, ClassEntityChild} from "typeorm";
  import {Comic} from "./Comic";
  import {BaseComic} from "./BaseComic";
  
  @ClassEntityChild()
  export class Variant extends BaseComic {
  
      @ManyToOne(type =&gt; Comic, comic =&gt; comic.variants)
      public comic: Comic;
  }
  </code></pre>