title: Any reason to put implements interface to class?
body: <p>I'm new to type script, just browsing their tutorial and trying some coding in their playground but found something strange.</p>
  
  <p>For example this code:</p>
  
  <pre><code>class foobar implements Ifoobar
  {
      full: string;
      constructor (public foo, public bar)
      {
          this.full = foo + bar;
      }
  }
  
  interface Ifoobar
  {
      foo: string;
      bar: string;
  }
  
  function test(ifoobar: Ifoobar)
  {
      return ifoobar.foo + ifoobar.bar;
  }
  
  var obj = new foobar("hello", "world");
  
  
  document.body.innerHTML = test(obj);
  </code></pre>
  
  <p>works if you put </p>
  
  <pre><code>class foobar implements Ifoobar
  </code></pre>
  
  <p>or just</p>
  
  <pre><code>class foobar 
  </code></pre>
  
  <p>so what's the point of using interface if contract itself was not enforced?</p>
  
  <p><strong>UPDATE</strong>
  My main concern is actually on this line:</p>
  
  <pre><code>document.body.innerHTML = test(obj);
  </code></pre>
  
  <p>this should throw error right since foobar doesn't use implements Ifoobar, and test(ifoobar: Ifoobar) as specified in method argument should accept only Ifoobar. To me it feels like typescript just plainly think that foobar is implements Ifoobar even though it isn't.</p>