Alias de Type

Ceci est la traduction en français d'une spécification de TypeScript #957 en cours d'implémentation.

Les alias de type permettent d'associer des noms à des types quelconques.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type StringOrNumber = string | number;
type Text = string | string[];
type Point = [number, number];
type NameLookup = Dictionary<string, Person>;
type LinkedList = {
    data: string;
    next: LinkedList;
};
var fullName: {
    first: string;
    middle: string;
    last: string;
};
type Name = typeof fullName;
Les alias de type sont particulièrement utiles pour nommer les types qui ne sont pas des types objets, comme les unions de types ou les types primitifs.

Les alias de type peuvent se substituer aux instanciations de types génériques (tel que pour le type NameLookup ci-dessus), mais ils ne peuvent pas eux-même avoir de paramètres de type.

Tout comme les déclarations d'interface, les alias de type déclarent uniquement des types et non des valeurs. Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class List<T> {
    // List implementation
}
type StringList = List<string>;
var x: StringList = new StringList();  // Error, cannot find name 'StringList'
Une erreur est survenue sur l'instanciation (new) de StringList() parce qu'il n'y a pas de méthode constructeur nommé StringList. Seul un type ayant ce nom existe. Pour avoir les deux, une sous-classe peut être déclarée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class List<T> {
    // List implementation
}
class StringList extends List<string> { }
var x: StringList = new StringList();  // Ok