title: TypeScript double class property initialization syntax
body: <p>I am a relatively experienced JavaScript developer but I can't quite get my head around this TypeScript syntax with the double initializing of class properties. Why? Why is the type checked twice? Is the greeting property before the constructor a static property of the class while the property in constructor for instances? I would be very grateful if someone can clear this up for me since the documentation doesn't seem to speak about it.</p>
  
  <pre><code>class Greeter {
      greeting: string;
      constructor(message: string) {
          this.greeting = message;
      }
      greet() {
          return "Hello, " + this.greeting;
      }
  }
  
  let greeter = new Greeter("world");
  </code></pre>