title: ES6 (ECMAScript 2015) support as of 2018
body: <p>As a long time programmer just getting into JavaScript programming, I have the following questions that are still unclear despite having read many articles. </p>
  
  <ul>
  <li>Looking at the <a href="http://www.webbrowsercompatibility.com/es6/desktop/" rel="noreferrer">ES6 (ECMAScript 2015) support by browsers</a>, I can see that the supporting level is much less than that of Node.js, so the question is, </li>
  <li>If both <a href="https://nodejs.org/en/docs/es6/" rel="noreferrer">Node.js</a> and browsers are using the <a href="https://developers.google.com/v8/" rel="noreferrer">modern V8 engine</a>, why supporting level are so different? </li>
  <li>Looking at the <a href="http://node.green/" rel="noreferrer">ES6 support in Node.js</a>, I can see really really few ES6 features are unsupported now. However, what exactly does the <em>supported</em> means in the chart? I.e., </li>
  <li>Does it means even I write using the support ES6 features, I still need to <a href="https://www.codementor.io/iykyvic/writing-your-nodejs-apps-using-es6-6dh0edw2o" rel="noreferrer">use the Babel compiler to compile ES6 code to ES5</a> for Node.js to use it? </li>
  <li>For TypeScript ES6-style JavaScript code that runs for Node.js, they are still need to be <a href="https://app.pluralsight.com/library/courses/es6-with-typescript/table-of-contents" rel="noreferrer">transpiled into an ES5 compatible form</a>, despite that Node.js almost cover all ES6 featues, right? I.e., </li>
  </ul>
  
  <p>for the following code,</p>
  
  <pre><code>class Animal {
      constructor(public name) { }
      move(meters) {
          console.log(this.name + " moved " + meters + "m.");
      }
  }
  
  class Snake extends Animal {
      move() {
          console.log("Slithering...");
          super.move(5);
      }
  }
  
  class Horse extends Animal {
      move() {
          console.log("Galloping...");
          super.move(45);
      }
  
  var sam = new Snake("Sammy the Python")
  var tom: Animal = new Horse("Tommy the Palomino")
  
  sam.move()
  tom.move(34)
  </code></pre>
  
  <p>Does it need to be transpiled into an ES5 compatible form to runs with Node.js or not? </p>
  
  <p>Finally, any online site that I can try playing with TypeScript/ES6 code like above? </p>
  
  <ul>
  <li>I copy it to my chrome console, and got an error that I don't understand - <code>Unexpected strict mode reserved word</code>, and</li>
  <li>I tried it on <a href="http://www.typescriptlang.org/play/index.html" rel="noreferrer">http://www.typescriptlang.org/play/index.html</a>, but the <code>console</code> output is not working there. </li>
  </ul>
  
  <p>Please help. thx. </p>