Announcing three open source projects for developing with TypeScript

Although Palantir is mostly known as a Java Swing shop, we have quietly (or not so quietly) been building for the web for a while now. From D3 for stunning graphics to Backbone and Angular for large-scale applications, we are using the latest and greatest web technologies to build the next generation of our products. As we’ve made the transition from native to web applications, we’ve tried to preserve some features of the strong development process that has served us so well in the native world: robust unit and end-to-end testing, continuous integration builds, and most importantly, a developer experience that makes it easy and fun to write the data analysis platforms and applications that our customers rely on to solve their most important, most complex data problems. We found TypeScript’s optional typing and forward-looking adoption of certain ECMAScript 6 features to be a great fit for those needs, but we wanted a bit more tooling. So today we’re pleased to announce three new open source projects we’ve undertaken to help fill out the TypeScript ecosystem.

Eclipse TypeScript plug-in

While we love Sublime Text at Palantir, we thought it would also be cool to have more of an IDE experience for TypeScript (probably because it is something we are familiar with from Java). Although there was already excellent support via WebStorm, we really wanted to have a first-class experience in Eclipse as well since it’s our primary development environment for our server code. We knew this would be a pretty involved task given all the functionality offered by a modern IDE, but one of our summer interns, Tyler Adams, bravely took on the project. The TypeScript team has done a great job of exposing a lot of the basic services necessary to build a robust IDE experience: auto-completion, syntax highlighting, code compilation, etc. All we had to do was figure out how to hook up these great services into Eclipse via a plug-in. One of the fun aspects of this project was that since parts of the plug-in are written in TypeScript, we were really motivated to get features done to make writing the plug-in itself easier. By the end of the summer we got pretty far (check out the feature list) and were so happy with the plug-in that we converted all of our code over to TypeScript (more about this below). There is always room for more improvement though, so we’d love to have your suggestions and code contributions. You can check out the project here: https://github.com/palantir/eclipse-typescript.

TypeScript auto-complete in Eclipse.

TSLint

Our backend code is mostly written in Java and we love tools like FindBugs and Checkstyle for ensuring that coding best practices are followed and common pitfalls are avoided. One of our engineers in NYC, Ashwin Ramaswamy, wanted to have some of those same assurances for our TypeScript code. He looked into using existing tools such as JSHint or ESLint but decided that we really needed something that would work directly on the TypeScript code. Each summer, we throw a Hack Week which is a week during which all normal work stops and everyone works in teams on fun projects they would like to see come to fruition. This past summer, Ashwin chose to create TSLint as his project. He didn’t just stop with the linter though – there are also plug-ins for Eclipse and Grunt to make it easier to use. Check it out at: https://github.com/palantir/tslint.

CoffeeScript to TypeScript converter

We use CoffeeScript for most of our projects at Palantir but we found that for some really large ones, optional typing can be a real boon to productivity. We learned this lesson the hard way after trying to maintain a medium-sized application and finding that we had to write an incredible amount of unit tests to be certain that even the simplest of edits (like renaming a variable) were safe. This summer, we asked one of our interns, Jared Pochtar, to work on an automated method of converting our CoffeeScript code to TypeScript. He came up with the brilliant idea to slightly modify the CoffeeScript compiler to output TypeScript instead of JavaScript. If you’d like to try out converting your codebase to TypeScript as well you can check out his work here: https://github.com/palantir/coffeescript-to-typescript.

With the recent release of TypeScript 0.9.5, we’ve begun to see the path towards 1.0 really take shape. We think TypeScript is going to be a great addition to the web community. We are really looking forward to see where it goes next and what people do with it!