TypeScript#

         

Jeremie Amsellem < classes@lp1.eu >


Sommaire#

  • Qu’est-ce que TypeScript ?
  • Les spécifités de TypeScript
    • Les annotations de type
    • Les types primitifs
    • Les tableaux
    • Les interfaces
    • Les classes
    • Les modificateurs d’accès
    • Les generics
    • Les Enum

Qu’est-ce que TypeScript ?#

TypeScript est un langage Libre (sous licence GNU/GPL) sorti en 2012

  • Développé par Microsoft
  • Orienté Objet
  • Transcompilé (ou “transpilé”) en JavaScript avec l’aide de babel
  • Accompagné d’un IDE : Visual Studio Code
  • Utilisé par le framework Angular depuis Angular 2

Les annotations de type#

TypeScript est un langage plus fortement typé que JavaScript. Il est possible de spécifier pour nos paramètres de fonctions, valeurs de retour et variables des types, par exemple :  

const myVar: number = 123;

function square(param: number) : number {
	return param * param; 
}

Les types primitifs#

TypeScript comprend 5 types primitifs :

  • Les nombres (number)
  • Les chaînes de caractères (string)
  • Les booléens (boolean)
  • void
  • null
  • undefined
let num: number;
let str: string;
let bool: boolean;

Les tableaux#

Ils sont similaires aux tableaux en JavaScript, à la différence qu’ils peuvent être également sujets aux annotations de type

let numberArray: number[];
let numberArray: Array<number>;

numberArray = [1,2,3]; //OK
numberArray = [1,'2',3]; //KO

Les interfaces#

Les interfaces permettent de définir la structure d’un objet, cette structure est plus ou moins stricte et doit être respectée par tous les tiers l’implémentant.

interface Person {
	name: string;
	age: number;
	children?: Object[];
}

let person: Person;

person = {
	name: 'John',
    	age: '25'
}

Les classes#

Les classes de TypeScript sont globalement similaires à celles d’ES6. En revanche TypeScript permet de définir des propriétés en dehors du constructeur d’une classe :

class Point {
	x: number;
    	y: number;
        
        constructor(x: number, y: number) {
        	this.x = x;
            	this.y = y;
        }
    
}

Les modificateurs d’accès#

TypeScript permet également d’ajouter des modificateurs d’accès sur les propriétés de nos classes :

  • public
  • private
  • protected
class Person {
  private nickname: string;
  protected name: string;
  public age: number;
}

Les generics#

Tout comme certains autres langages haut-niveau il est possible de définir des generics relatifs aux types de données utilisées dans une fonction :

function add<T>(a: T, b: T): number {
	return parseInt(a) + parseInt(b);
}

add<string>('1', '2') // 3;
add<number>(1,2) // 3;

Les Enum#

Autre nouveauté appréciable en comparaison avec JavaScript, nous pouvons ici définir des enum :

enum fd {
	STDIN,
	STDOUT,
    	STDERR
}

enum returnCodes {
	ERROR=1,
    	OK=0
}

TDs#