Our company SuranceBay developed a platform for the insurance industry, and most of the UI for this system was written using Apache Flex framework (formerly Adobe Flex). Flex is an excellent framework for developing Web UI, but it requires Flash Player, which is not in favor anymore. Our quest for a good JavaScript framework started about four years ago.

After trying several pilot JavaScript projects we noticed a substantial drop in our developers’ productivity. A task that required one day in Flex would need three days in any JavaScript framework, including AngularJS. The main reasons were the lack of types in JavaScript, poor IDE support, and absence of compiler’s support.

When we learned that Google started development of the Angular 2 framework with TypeScript as a recommended language for development, we became early adopters. A year later we can confirm that the Angular 2/TypeScript duo is the most productive way of developing mid-to-large size Web applications that can run in any modern Web browser as well as on mobile platform.

These are the main reasons why I believe that Angular 2 and TypeScript are the right tools for developing Web applications:

1. The tooling support is as good as on Java or .Net platforms

2. TypeScipt code analyzer warns you about the errors as you type

3. Using TypeScript classes and interfaces makes the code more concise and easy to read and write

4. Clean separation between the code that renders UI and the code that implements application logic

5. The UI doesn’t have to be rendered in HTML, and there are already products supporting native UI rendering for iOS and Android

6. Angular 2 offers a simple mechanism for modularizing application with support of lazy loading of modules

7. The TypeScript compiler generates JavaScript that a human can read

8. The TypeScript code can be compiled into ES3, ES5, or ES6 versions of JavaScript

9. The router supports complex navigation scenarios in single-page applications

10. Dependency injection give you a clean way to implement loose coupling between components and services

11. Binding and events allows you to create reusable and loosely coupled components

12. Each component goes through a well-defined lifecycle, and hooks for intercepting important component events are available for application developers

13. Automatic (and fast) change detection mechanism spares you from the need to manually force UI updates while giving you a way to fine-tune this process

14. Angular 2 comes with the Rx.js library, which allows you to arrange a subscription-based processing of asynchronous data and eliminates the callback hell

15. Support of forms and custom validation is well designed

16. Unit and integration testing are well supported and you can integrate tests into your building process

17. The bundling and optimization of the code with Webpack (and its multiple plugins) makes the size of deployed application small

18. An ability to pre-compile the code eliminates the need to package Angular compiler (not to be confused with TypeScript compiler) with your app, which further minimizes the overhead of the framework

19. Angular Universal turns your app into HTML in an offline build step, that can be used for server-side rendering, which in turn greatly improves indexing by search engines and SEO

20. The library of the modern-looking UI components Angular Material 2 offers a number of modern looking components

21. The scaffolding and deployment tool (Angular CLI) spares developers from writing the boilerplate code and configuration scripts

From the management perspective, Angular 2 is appealing, because there are already more than a million AngularJS developers, and most of them will switch to Angular 2. Having a large pool of workers with specific skills is an important consideration for selecting a technology for new projects. Besides, there are more than 15 million Java and .Net developers combined, and many of them will find the syntax of TypeScript a lot more appealing than JavaScript, because of support of classes, interfaces, generics, annotations, class member variables, private/public variables, helpful compiler, and good support by familiar IDEs.

As you can see from this list, Angular 2 comes with batteries included. Check it out!