TypeScript

Voir la vidéo

Le TypeScript est un langage de programmation open-source développé par Microsoft. Le langage se présente comme un sur-ensemble du JavaScript avec notamment l'apport d'un typage statique optionnel des variables et des fonctions, la création de classes et d'interfaces, la création de namespaces et de modules.

Installation

Pour commencer à expérimenter avec le TypeScript vous pouvez utiliser le playground. Si vous souhaitez utiliser TypeScript pour vos projets vous pouvez installer le transpiler via npm :

npm i -g typescript

Cette installation vous donnera accès à la commande tsc qui vous permettra de transpiler votre code en JavaScript (ES3, ES5 ou ES2015).

tsc index.ts

Si vous souhaitez transpiler pour le web il vous faudra passer par webpack ou browserify avec l'utilisation de plugin ou de loaders.

Typage

Comme son nom l'indique le TypeScript va vous permettre de définir le type de vos variables, paramètres et retours de fonctions.

let a: number

function demo(selector: string, options: {ease: string, duration: number}): Element{
    return document.querySelector(selector)
}

Ce typage peut se fait aussi de manière implicite lorsque l'on assigne une valeur à une variable.

let a = 3
a = "Salut les gens" // Type 'string' is not assignable to type 'number'

Les Classes

Avec l'ES2015 le JavaScript supporte l'utilisation du mot clef class. Le TypeScript pousse les choses plus loin en permettant de gérer la visibilité des propriétés et la gestion des méthodes statiques.

class Demo {

    private factor

    constructor (factor: number) {
        this.factor = factor
    }

    public multiplie (n: number): number {
        return n * this.factor
    }

    static salut (): string {
        return 'Salut'
    }

}

Il est aussi possible de déclarer des accesseurs et mutateurs afin de mieux controler ce qui rentre et sort de votre objet.

class Color {

    private _color: string

    public constructor (color) {
        this._color = color 
    }

    set color (color) {
        this._color
    }

    get color () {
        if (this._color === 'rouge') {
            return 'vert'
        } else {
            return this._color
        }
    }

}

let c = new Color('rouge')
console.log(c.color) // vert

Les Namespaces

Les namespaces vous permettent d'organiser les variables dans un groupe donné afin d'éviter les problèmes d'écrasement des variables.

namespace Grafikart {
    export let var1 = 3
    let var2 = 4
    export class Demo { }
}
Grafikart.var1 // 3
Grafikart var2 // Erreur, cela n'existe pas en dehors du module
let d = new Grafikart.Demo() // Objet de type Grafikart.Demo

Les modules

Les modules se présentent comme des namespaces que l'on va pouvoir isoler dans un fichier séparé. Le principe est relativement similaire.

// demo.ts
export let var1 = 3
let var2 = 4
export class Demo { }

// index.ts
import { var1, Demo } from './demo'
var1 // 3

Je n'ai ici que survolé l'ensemble de possibilités du TypeScript, n'hésitez pas à parcourir la documentation pour obtenir plus d'informations.

Publié
Technologies utilisées
Auteur :
Grafikart
Partager