I have been trying to keep myself out of UI Development for years until recently with the emergence of Microsoft TypeScript. Developing UI elements with TypeScript is such a breeze that I no longer hit my keyboard too hard and my colleagues are no longer afraid to approach my desk during UI development. Most importantly, I spend more time with my family rather than countless late nights in the office trying to solve an unknown mystery.
Here are a couple of reasons that this appeals to me.
One of the main goals of TypeScript is to make it as compatible as possible to ECMAScript 6, hence it supports most (if not all) of the object-oriented concepts/constructs, especially classes, interfaces, modules, generics, static typing, etc. The following code snippet demonstrates most of the concepts. It looks more natural and closer to what an object oriented developer would imagine. This is a good point about typescript in that it borrows most of the concepts and syntax from existing languages, hence the reduced learning curve.
Most of the IDEs (Eclipse, WebStorm, and Visual Studio) have support for TypeScript, either built-in (Visual Studio) or as a plugin. All of which makes life easier since the IDE acts as the enforcer and guides developers as needed.
this object while running functions asynchronously, especially in callbacks. Suddenly you find your
this** **object changed by something unforeseen, and as a result you end up nodding your head the whole night in front of your monitor. A simple work around is to preserve the
this object in some other variable, for example:
The equivalent TypeScript code would be:
The million dollar question: What about the external libraries (jQuery, Backbone, Jasmine, AngularJS, etc.)? It can be defined based on the functionality it provides and that is why the Definitely Typed repository exists. If you explore this repository you will find the d.ts for almost everything you can think of. If for some reason it does not exist, it can be created easily.
This sample Typescript application is loaded with lots of features and basically demonstrates Typescript feature usage in collaboration with existing libraries and tools.
Feel free to clone it and play with it. Instructions are provided in the GitHub repository.