title: Declaring a class type variable in Typescript
body: <p>I'm having trouble understanding line 18 of the following snippet of a <a href="https://www.typescriptlang.org/docs/handbook/classes.html" rel="noreferrer">TypeScript tutorial</a>.</p>
  
  <pre class="lang-js prettyprint-override"><code>1   class Greeter {
  2       static standardGreeting = "Hello, there";
  3       greeting: string;
  4       greet() {
  5           if (this.greeting) {
  6               return "Hello, " + this.greeting;
  7           }
  8           else {
  9               return Greeter.standardGreeting;
  10          }
  11      }
  12  }
  13  
  14  let greeter1: Greeter;
  15  greeter1 = new Greeter();
  16  console.log(greeter1.greet());
  17  
  18  let greeterMaker: typeof Greeter = Greeter;
  19  greeterMaker.standardGreeting = "Hey there!";
  20  
  21  let greeter2: Greeter = new greeterMaker();
  22  console.log(greeter2.greet());
  </code></pre>
  
  <p>As I understand from the tutorial, the goal of the declaration of <code>greatermaker</code> is getting the Greeter class type into a variable, rather than the instance type.</p>
  
  <p>Firstly, what is the function of the assignment operator <code>=</code> in this line?</p>
  
  <p>Secondly, what do we mean exactly with the distinction between the class type and the instance type?
    I guess, in the first we are able to manipulate the static member variables as opposed to the second?</p>
  
  <p><strong>Edit.</strong></p>
  
  <p>Why don't we just use <code>let greeterMaker: typeof Greeter</code>, that is without the assignment operator?</p>