Microsoft TypeScript : A Typed Superset of JavaScript

JavaScript is becoming a ubiquitous programming language for the web, and the popularity of JavaScript is increasing day by day. Earlier, JavaScript was just a language for the browser. But now, we can write JavaScript apps for browser, server and mobile. With the advent of Node.js, you can build scalable, high performance apps on the server with JavaScript. But many developers, especially developers who are working with static type languages, are hating the JavaScript language due to the lack of structuring and the maintainability problems of JavaScript. Microsoft TypeScript is trying to solve some problems of JavaScript when we are building scalable JavaScript apps.

Microsoft TypeScript

TypeScript is Microsoft's solution for writing scalable JavaScript programs with the help of Static Types, Interfaces, Modules and Classes along with greater tooling support. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. This would be more productive for developers who are coming from static type languages. You can write scalable JavaScript  apps in TypeScript with more productive and more maintainable manner, and later you can compiles to plain JavaScript which will be run on any browser and any OS. The TypeScript website available at http://www.typescriptlang.org/ 

TypeScript will work with browser based JavaScript apps and JavaScript apps that following CommonJS specification. You can use TypeScript for building HTML 5 apps, Node.JS apps, WinRT apps.

TypeScript is providing better tooling support with Visual Studio, Sublime Text, Vi, Emacs. Microsoft has open sourced its TypeScript languages on CodePlex at http://typescript.codeplex.com/   

Install TypeScript

You can install TypeScript compiler as a Node.js package via the NPM or you can install as a Visual Studio 2012 plug-in which will enable you better tooling support within the Visual Studio IDE. Since TypeScript is distributed as a Node.JS package, and it can be installed on other OS such as Linux and MacOS.

The following command will install TypeScript compiler via an npm package for node.js

npm install –g typescript

typescript_node

TypeScript provides a Visual Studio 2012 plug-in as MSI file which will install TypeScript and also provides great tooling support within the Visual Studio, that lets the developers to write TypeScript apps with greater productivity and better maintainability. You can download the Visual Studio plug-in from here

tyescript_vs

Building JavaScript  apps with TypeScript

You can write typed version of JavaScript programs with TypeScript and then compiles it to plain JavaScript code. The beauty of the TypeScript is that it is already JavaScript and normal JavaScript programs are valid TypeScript programs, which means that you can write normal  JavaScript code and can use typed version of JavaScript whenever you want. TypeScript files are using extension .ts and this will be compiled using a compiler named tsc.

The following is a sample program written in  TypeScript

greeter.ts

   1:  class Greeter {
   2:      greeting: string;
   3:      constructor (message: string) {
   4:          this.greeting = message;
   5:      }
   6:      greet() {
   7:          return "Hello, " + this.greeting;
   8:      }
   9:  }   
  10:   
  11:  var greeter = new Greeter("world");
  12:   
  13:  var button = document.createElement('button')
  14:  button.innerText = "Say Hello"
  15:  button.onclick = function() {
  16:      alert(greeter.greet())
  17:  }
  18:   
  19:  document.body.appendChild(button)

The above program is compiling with the TypeScript compiler as shown in the below picture

typescript_compile

The TypeScript compiler will generate a JavaScript file after compiling the TypeScript program. If your TypeScript programs having any reference to other TypeScript files, it will automatically generate JavaScript files for the each referenced files.

The following code block shows the compiled version of plain JavaScript  for the above greeter.ts

greeter.js

   1:  var Greeter = (function () {
   2:      function Greeter(message) {
   3:          this.greeting = message;
   4:      }
   5:      Greeter.prototype.greet = function () {
   6:          return "Hello, " + this.greeting;
   7:      };
   8:      return Greeter;
   9:  })();
  10:  var greeter = new Greeter("world");
  11:  var button = document.createElement('button');
  12:  button.innerText = "Say Hello";
  13:  button.onclick = function () {
  14:      alert(greeter.greet());
  15:  };
  16:  document.body.appendChild(button);

Tooling Support with Visual Studio

TypeScript is providing a plug-in for Visual Studio which will provide an excellent support for writing TypeScript  programs within the Visual Studio.

The following screen shot shows the Visual Studio template for TypeScript apps

  TypeScript_VSTemplate

The following are the few screen shots of Visual Studio IDE for TypeScript apps.

TS_Point1

ts_point4

ts_point2

ts_point3

Summary

TypeScript is Microsoft's solution for writing scalable JavaScript apps which will solve lot of problems involved in larger JavaScript apps. I hope that this solution will attract lot of developers who are really looking for writing maintainable structured code in JavaScript, without losing any productivity. TypeScript lets developers to write JavaScript apps with the help of Static Types, Interfaces, Modules and Classes and also providing better productivity. I am a passionate developer on Node.JS and would definitely try to use TypeScript for building Node.JS apps on the Windows Azure cloud. I am really excited about to writing Node.JS apps by using TypeScript, from my favorite development IDE Visual Studio.

You can follow me on twitter at @shijucv

2 Comments

  • Thanks for this intro. Its looks really interesting, I really liked the TypeScript example, I would rather see that code instead of plain JavaScript.

  • Great to see support for Eclipse, Sublime, Vi, Emacs etc.

    I'm looking for VS2010 support. I can't imagine that the plugin is unable to be made to run in VS2010 (which I'd hope uses a plugin model closer to VS2012 than say Vi). Pure marketing decision?

Comments have been disabled for this content.