Type Script

      https://www.typescriptlang.org/play/

      Book:
      https://github.com/basarat/typescript-book 
      
      Source code for exersices 
      https://github.com/basarat/typescript-book/tree/master/code

This type script (.ts) will generate the JS class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } } let greeter = new Greeter("world"); let button = document.createElement('button'); button.textContent = "Say Hello"; button.onclick = function () { alert(greeter.greet()); } document.body.appendChild(button);
    var Greeter = (function () {
         function Greeter(message) {
             this.greeting = message;
         }
         Greeter.prototype.greet = function () {
             return "Hello, " + this.greeting;
         };
         return Greeter;
    }());

    var greeter = new Greeter("world");
    var button = document.createElement('button');

    button.textContent = "Say Hello";

    button.onclick = function () {
        alert(greeter.greet());
    };
    
    document.body.appendChild(button);