title: TypeScript keeps changing "this" reference after transpiling
body: <p>I was trying to run the following code snippet:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>interface IPerson{
    firstName:string,
    lastName:string,
    age:number,
    fullName:()=&gt;string
  }
  
  var person:IPerson = {    
    firstName: "Tom",
    lastName: "Hal",
    age: 25,    
    fullName: ():string=&gt;{return this.firstName + ' ' + this.lastName}
  }
  
  console.log(person.fullName());
  console.log(person.age);</code></pre>
  </div>
  </div>
  </p>
  
  <p>What I found is that tsc transpiler is changing this reference and the result for the first console.log statement is undefined, that's because the transpiled code is as follow:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var _this = this;
  var person = {
      firstName: "Tom",
      lastName: "Hal",
      age: 25,
      fullName: function () { return _this.firstName + ' ' + _this.lastName; }
  };
  console.log(person.fullName());
  console.log(person.age);</code></pre>
  </div>
  </div>
  </p>
  
  <p><strong>"this"</strong> reference has been changed, how I can prevent this behavior?</p>