Introduction au langage TypeScript

Pr�requis :
  • Connaissance des principes de bases de la programmation orient�e objet
  • Connaissance des principes de bases de Javascript
  • Compilateur TypeScript install�

(0.1)

Sommaire :
  • Introduction
  • Typage
  • Classe
  • Fonction anonyme fl�ch�e
  • Modularit�
  • Conclusion

(0.2)

1. Introduction
Cet article est une pr�sentation succincte des principaux apports de TypeScript que sont le typage, les classes, les fonctions anonymes "fl�ch�es" et la modularit�.

Il convient �galement de rappeler que le langage TypeScript est avant tout du Javascript am�lior� ce qui permet la r�utilisation de ses connaissances en Javascript. Il faut n�anmoins avoir conscience que les limitations intrins�ques de Javascript refl�tent �galement dans TypeScript. Par exemple, la notion de d'attributs priv�s d'une classe qui existe dans la plupart des langages orient�s objets, bien que syntaxiquement pr�sente dans TypeScript, n'est pas restrictive mais uniquement indicative dans la mesure o� un attribut priv� pourra malgr� tout �tre utilis� en dehors de sa classe.

La sp�cification compl�te du langage TypeScript est disponible sur le site officiel.


2. Typage

Le principal apport du langage TypeScript, celui qui justifie le nom m�me du langage, est la possibilit� d'associer, facultativement, un type � une donn�e.

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
var pi: number;
var message: string;
var flag: boolean;
var joker: any;
(2.1)

Dans l'exemple ci-dessus, quatre variables sont d�clar�es sans �tre initialis�es � l'aide d'un type dont la signification est explicite.
  • La variable pi a pour type number, un nombre entier ou flottant.
  • La variable message a pour type string, une chaine de caract�res.
  • La variable flag a pour type boolean, un bool�en qui peut prendre la valeur true ou false.
  • La variable joker a pour type any, qui est le type par d�faut qu'attribut TypeScript � une variable s'il ne parvient pas � d�terminer son type lors de sa d�claration.

(2.2)

Bien entendu, il est possible d'initialiser une variable au moment de sa d�claration comme on peut le voir ci-dessous.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
var pi: number = 3.14;
var message: string = "Bonjour !";
var flag: boolean = true;
var joker: any = null;
(2.3)

Bien que la mention explicite du type soit recommand�e, en l'absence de celui-ci lors de la premi�re initialisation d'une variable, TypeScript en inf�re automatiquement le type.

A noter que TypeScript, contrairement � Javascript, peut ainsi �tre consid�r� comme un langage � typage statique.


3. Classe

La notion de classe introduite dans TypeScript anticipe la prochaine �volution de Javascript (ECMAScript 6).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Greeter {
    element: HTMLElement;
    span: HTMLElement;
    timerToken: number;
 
    constructor(element: HTMLElement) {
        this.element = element;
        this.element.innerHTML += "The time is: ";
        this.span = document.createElement('span');
        this.element.appendChild(this.span);
        this.span.innerText = new Date().toUTCString();
    }
 
    start() {
        this.timerToken = setInterval(() => this.span.innerHTML = new Date().toUTCString(), 500);
    }
 
    stop() {
        clearTimeout(this.timerToken);
    }
 
}
 
window.onload = () => {
    var el = document.getElementById('content');
    var greeter = new Greeter(el);
    greeter.start();
};
(3.1)

Comme on peut le voir dans l'exemple ci-dessus, une classe Greeter y est d�finie d'une fa�on proche de la plupart des langages orient�s objet.

La classe Greeter poss�de ici trois attributs (element, span et timerToken), d�fini un constructeur (constructor) et deux m�thodes (start et stop). Son instanciation se fait � l'aide de l'op�rateur new comme on peut le voir � la fin de l'exemple pr�c�dent.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
var greeter = new Greeter(el);
(3.2)
De pair avec la notion de classe, TypeScript impl�mente la notion d'h�ritage simple par l'utilisation du mot-cl� extends.
L'extension de la classe Greeter de l'exemple pr�c�dent pourrait se faire ainsi :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
class GreeterId extends Greeter {
  id: string;
  constructor(element: HTMLElement, id: string) {
    super(element);
 
    this.id = id;
  }
}
(3.3)

Cette nouvelle classe GreeterId se contente d'ajouter un nouvel attribut id � la classe Greeter.

Toutes les classes d�finies dans TypeScript peuvent ensuite �tre consid�r�es comme des nouveaux types.


4. Fonction anonyme fl�ch�e

Un autre apport notable de TypeScript � Javascript est sa nouvelle mani�re de d�finir une fonction anonyme. Comme celle pr�sente � l'int�rieur de la m�thode start en param�tre � l'appel de setInterval et qui peut �tre d�nomm�e ici notation "fl�ch�e" (arrow function).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
this.timerToken = setInterval(() => this.span.innerHTML = new Date().toUTCString(), 500);
(4.1)

L'avantage par rapport � l'actuelle norme de Javascript (ECMAScript 5), est que la notation fl�ch�e ne change pas la valeur de contexte du mot-cl� this � l'int�rieur de la fonction anonyme. Cela �vite donc l'utilisation d'une variable interm�diaire servant � propager la valeur de this � l'int�rieur de la fonction anonyme. Par exemple, la ligne de code pr�c�dente aurait pu �tre transcrite ainsi en Javascript actuel :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
var _this = this;
this.timerToken = setInterval(function () {
    return _this.span.innerHTML = new Date().toUTCString();
}, 500);
(4.2)

Cette la nouvelle notation plus concise sera utile en particulier pour les fonctions callback.


5. Modularit�

TypeScript introduit de nouvelles techniques de modularisation devenues n�cessaires par le typage statique et par l'h�ritage de classes.
Parmi ces techniques de modularisation, le r�f�rencement d'un fichier TypeScript externe est peut-�tre la plus simple.
Elle consiste � ajouter en tout d�but de fichier, le source TypeScript externe contenant des d�clarations n�cessaire au compilateur afin qu'il en d�duise entre autre les types et les h�ritages.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
/// <reference path="Externe.ts"/>
(5.1)

A noter que cela ressemble un peu aux #include des langages C/C++.


6. Conclusion

Cette pr�sentation est �videmment loin d'�tre compl�te. Pour se familiariser avec TypeScript, il peut �tre utile d'utiliser la page de test afin de voir instantan�ment la conversion d'un code TypeScript en un code Javascript. Sinon, la sp�cification, malheureusement non traduite en fran�ais, reste indispensable pour approfondir le sujet.

En esp�rant que cet article vous aura �t� utile.