Here is the TypeScript’s definition from Microsoft:
TypeScript is a typed superset of JavaScript
that compiles to plain JavaScript and is a language for application-scale
JavaScript development.
TypeScript is a not new language, but a thin layer on top of
existing JavaScript strengthening it with tooling, IDE services and
refactoring. It enables easy embrace of JavaScript while building enterprise
applications using todays technologies (see my blog on this). Thanks to
Microsoft, now everyone can build scalable large JavaScript applications targeting
all browsers and platforms.
TypeScript is a superset of JavaScript which starts and end
with JavaScript. All your existing JavaScript is TypeScript. Unlike other
transcompilers, like CoffeeScript, TypeScript is a syntactic sugar built on top
of JavaScript to support large applications and teams. By building on
JavaScript, TypeScript can make your JavaScript development at very high level
or close to the metal.
TypeScript is not a replacement for JavaScript and not for
better performance or optimization. It only aids in writing, maintaining and
verifying code. TypeScript estimates what happens during runtime and performs
static checking while you are writing code thereby protecting you from unwanted
side effects and dramatically increasing your productivity. It also
incorporates design patterns and best practices. TypeScript also provide a
mechanism for documentation and statement completion for most of your favorite
JavaScript libraries.
The interesting thing about TypeScript is that the
TypeScript’s compiler and tooling support is also written in TypeScript. With
its local and non-intrusive code generation, TypeScript works wherever
JavaScript works i.e., browsers, node, cloud, Windows 8 etc.
In this blog I outline the important features and tooling
supported by TypeScript. In my next blog I delve into these in detail.
TypeScript Features:
The feature set of TypeScript is similar to that of any
object oriented program such as C# or VB.NET. With these feature set Microsoft
is trying for easy adoptability to JavaScript.
Type System
TypeScript as the name indicates provide an ability to
define types in JavaScript. With the static types, TypeScript provides syntax
highlighting helping you identify bugs before even running the code. These
static types are supported for both variables and parameters. This type system
is optional and is only used to aid writing code.
TypeScript supports all the primitive types such as number,
string, boolean, null. It also support complex types such as DOM elements,
custom types such as JQuery elements and a special type called Any
Class
Similar to other object oriented programs, TypeScript
included Class syntax thereby making .NET and object oriented programming
developers feel home and easily group related functions and variables within
this container. Similar to classes in other programming languages, these
classes helps in code abstraction, inheritance, reusability and
maintainability.
TypeScript classes align with ECMA Script 6 proposal which
supports classes in JavaScript.
Properties
TypeScript provides properties using get and set accessor
declarations. These properties similar to that of the C# or VB.NET
Methods
The Method support is similar to that of JavaScript and
other languages. TypeScript uses prototype to chain the method calling.
Interface
Interfaces helps to provide consistency across modules and
teams. Interface also helps to provide documentations for custom or external
JavaScript libraries.
Inheritance
Similar to OO, TypeScript provides Inheritance. The syntax
is similar to that of Java with extends and super keywords
Modules
Modules are similar to the namespace concept in .NET. They
wrap the classes in a naming container, help to organize the classes and
modules and avoid naming collisions. They also provide a mechanism to exposes
classes or have internal classes.
Accessibility
TypeScript provides accessibility options for classes and
their members. The class members’ accessibility can be set by using public and
private and the class accessibility can be restricted or allowed using the export
keyword.
Open ended
Both the modules and classes are open ended, meaning you can
define them in any place and they all belong to the same class or module. You
can think of this like a partial class.
TypeScript Tooling:
In order to build enterprise scale JavaScript applications a
robust tooling is needed. TypeScript provides such tooling in Visual Studio
2012 and Visual Studio 2013. TypeScript tooling is not limited to Visual
Studio, but also support Eclipse, Web Storm, Sublime Text, emacs, and vim. But
Visual Studio provides best developer experience.
Below are some of the tooling support in Visual Studio:
IntelliSense and statement completion – TypeScript parses your team’s code and provides intellisense and statement completion, so that you don’t have to remember all the syntax. It also provides intellisense and statement completion for custom and popular javascript libraries using declare files mentioned below.
Refactoring and code navigation – Similar to C# or VB.NET, TypeScript has the same great code tools, such as Rename, Go to Definition, Go to Declaration.
Microsoft is planning to add more tooling support such as
split screen view, generated code grouping in their next releases.
Try Out TypeScript
Microsoft designed a playground to try out TypeScript and
it’s capabilities before deciding to use it in your project. In that playground
they also included some samples.
With so many features and tools, TypeScript is must for
application development and is too expensive in time for not having TypeScript
in your armor.
Please go to my TypeScript blog series for other
blogs in TypeScript.