title: why do we need typeof as a interface to get the static properties of a class in typescript
body: <p>I am learning the typescript official handbook explaining constructor functions and came across the following code. </p>
  
  <pre><code>class Greeter {
      static standardGreeting = "Hello, there";
      greeting: string;
      greet() {
          if (this.greeting) {
              return "Hello, " + this.greeting;
          }
          else {
              return Greeter.standardGreeting;
          }
      }
  }
  
  let greeter1: Greeter;
  greeter1 = new Greeter();
  console.log(greeter1.greet());
  
  let greeterMaker: typeof Greeter = Greeter;
  greeterMaker.standardGreeting = "Hey there!";
  
  let greeter2: Greeter = new greeterMaker();
  console.log(greeter2.greet());
  </code></pre>
  
  <p>It goes on to explain that when writing  </p>
  
  <blockquote>
    <p>let greeterMaker: typeof Greeter = Greeter;</p>
  </blockquote>
  
  <p>we are able to access the actual class with the static properties by using <code>typeof Greeter</code>, hence able to write <code>greeterMaker.standardGreeting = "Hey there!";</code></p>
  
  <p>My question is, when i tested this, i realised the same thing will work without writing <code>typeof Greeter</code> just with  <code>let greeterMaker = Greeter;</code> one is able to write <code>greeterMaker.standardGreeting = "Hey there!";</code></p>
  
  <p>Please can you tell me where i have gone wrong and when i need to write the typeof keyword.</p>