title: TS2345: type 'Construct' is not a class derived from 'Construct'
body: <p>Following the tutorial on this page: <a href="https://cdkworkshop.com/20-typescript/40-hit-counter/300-resources.html" rel="noreferrer">https://cdkworkshop.com/20-typescript/40-hit-counter/300-resources.html</a></p>
  
  <p>I believe <code>this</code>, passed to the <code>Table</code> constructor, should be <code>HitCounter</code>, a sub-constructor of <code>cdk.Construct</code></p>
  
  <p>It returns this lint:</p>
  
  <pre><code>this: this
  Argument of type 'this' is not assignable to parameter of type 'Construct'.
    Type 'HitCounter' is not assignable to type 'Construct'.
      Property 'onValidate' is protected but type 'Construct' is not a class derived from 'Construct'.ts(2345)
  </code></pre>
  
  <p>I also get an internal server error on this step. Anyone know what the issue is?</p>
  
  <pre><code>import * as cdk from "@aws-cdk/core";
  import * as lambda from "@aws-cdk/aws-lambda";
  import * as dynamodb from "@aws-cdk/aws-dynamodb";
  
  export interface HitCounterProps { downstream : lambda.IFunction; }
  
  export class HitCounter extends cdk.Construct {
     public readonly handler: lambda.Function;
  
     constructor(scope: cdk.Construct, id: string, props: HitCounterProps) {
        super(scope, id);
  
        const table = new dynamodb.Table(this, "Hits", { // lints `this`
           partitionKey : { 
              name : "path", 
              type : dynamodb.AttributeType.STRING 
           }
        });
        &lt;more code removed&gt;
     }
  }
  </code></pre>