Dealing with TypeScript

21 fév

Je viens de porter le SDK d’Expantion Origin pour TypeScript. Une excellente opportunité pour tester le nouveau joué de Microsoft.

La première chose qu’il faut savoir, c’est que TypeScript n’est pas vraiment un nouveau langage de programmation comme Dart ou Haxe, mais un sur-ensemble de JavaScript. Quand on code avec TypeScript, on code en JavaScript et ça se ressent très nettement.

TypeScript apporte pas mal de chose au langage, une POO class based avec des types, des classes, des interfaces, l’inférence de type, et des fonctions lambda.
Il apporte également un compilateur et le live checking error et un plug-in pour Visual Studio 2012.
« TypeScript originates from the need to develop large-scale JavaScript applications. » Microsoft
Une problématique qui revient souvent on dirait.
TypeScript est Open Source, sous licence Apache 2, et le compilateur peut être utilisé librement sur n’importe quel environnement.

Le langage : Rhââ Lovely

Il est important de rappeler que TypeScript est disponible en version 0.8.2, une version Alpha étiquetée : « Use at your own risk ».
Pas question donc de l’utiliser pour autre chose que de la R&D.

/**
* @internal method
*/
class TurnResult {

orders: Order[];
consoleMessage: string;
error: string;

constructor (orders: Order[], message?: string="")
{
this.orders = orders;
this.consoleMessage = message;
this.error = "";
}

}

Une classe, des liste typées, des paramètres optionnels, et bien rien que ça, c’est magique.
J’ai découvert l’inférence de type il y a quelque temps avec Haxe, et ça fonctionne admirablement bien aussi avec TypeScript.
Par contre la gestion des packages m’a manquée. En effet, TypeScript en est dépourvu. Petite consolation, le système de Modules.
Il est en effet possible de déclarer des classes dans des fichiers externes et de les exposer au reste de l’application.
Les dépendances se gèrent alors comme ceci

///<reference path="SDK.ts"/>

C’est galère, d’autant que les « imports » ne sont pas automatiques, mais la puissance des modules n’est pas là.

module Shapes {
export class Rectangle {
constructor (
public height: number,
public width: number) {
}
}
}
// This works!
var rect = Shapes.Rectangle(10, 4);

Il apporte surtout un très bon paradigme pour gérer des applications modulaires avec AMD.
Je n’ai pas encore testé toute la puissance du système car le sujet ne s’y prêtait pas, mais ça me démange.

TypeScript pour Visual Studio

J’aurais pu essayer TypeScript avec Sublime Text, mais c’est le plug-in pour Visual Studio que j’ai testé.
L’IDE de Microsoft est disponible en version « express édition» gratuite. Ces quelques heures passées à coder avec m’ont laissé une très bonne impression.
L’éditeur est agréable, accessible et efficace.
Le live checking error fonctionne bien et se montre particulièrement appréciable. Les quelques fonctions de refactoring, bien que peu nombreuses, apportent une réelle amélioration.
La compilation est assez rapide mais les erreurs remontées peut verbeuses. Impossible de comprendre ce qui ne va pas et où ça coince.

Conclusion

C’est une technologie encore jeune, certes avec bien moins de features que Haxe, mais j’ai pris plaisir à coder en TypeScript.
Prochaine étape, Dart !

No comments yet

Leave a Reply

*