TypeScript types avances - 15 - Glossaire

Glossaire des termes lies aux types avances de TypeScript. Définitions concises de chaque concept couvert dans cette serie.

15 - Glossaire

Tous les termes de la serie, par ordre alphabetique. Chaque définition renvoie vers l'article qui couvre le concept en détail.


A

AsyncGenerator — Type d'un generateur asynchrone qui produit des valeurs de type T une par une avec yield. Implemente AsyncIterable<T>. → Article 13

AsyncIterable — Interface que for await...of attend. Plus générique que AsyncGenerator pour les signatures de fonctions. → Article 13

Augmentation de module — Technique pour ajouter des déclarations a un module npm existant avec declare module "nom" {}. Permet d'etendre les types de libs tierces. → Article 10

Awaited — Utility type qui deballe recursivement les Promise<T>. Awaited<Promise<Promise<string>>> donne string. → Article 13

B

Bivariance — Quand un paramètre de type est accepte dans les deux sens (covariant et contravariant). Les méthodes declarees avec la syntaxe de méthode sont bivariantes en TypeScript. → Article 08

Branded type — Type qui ajoute un "tag" fantome a un type primitif pour le différencier d'un autre. Brand<string, "UserId"> empeche de passer un OrderId là où un UserId est attendu. → Article 05

C

Conditional type — Type qui utilise la syntaxe T extends U ? X : Y pour choisir entre deux types selon une condition. Équivalent du ternaire au niveau des types. → Article 02

Const type parameter — Paramètre de type prefixe par const (<const T>) qui force l'inference des literals sans que l'appelant ecrive as const. Disponible depuis TypeScript 5.0. → Article 06

Contravariance — Quand la relation de sous-typage s'inverse. Les paramètres de fonctions sont contravariants : Consumer<Animal> est assignable a Consumer<Dog>. → Article 08

Covariance — Quand la relation de sous-typage se conserve. Les retours de fonctions sont covariants : Producer<Dog> est assignable a Producer<Animal>. → Article 08

D

Déclaration merging — Mecanisme de TypeScript qui fusionne automatiquement deux déclarations du meme nom (interfaces uniquement). → Article 10

Distributive conditional type — Comportement ou un conditional type se distribue sur les membres d'une union quand le paramètre de type est "nu". T extends U ? X : Y avec T = A | B donne (A extends U ? X : Y) | (B extends U ? X : Y). → Article 03

E

Exhaustive check — Verification a la compilation que tous les cas d'une union sont geres. Avec ts-pattern, .exhaustive() fait cette vérification. → Article 12

G

Global augmentation — Technique pour ajouter des types au scope global avec declare global {}. Utile pour etendre Window, process.env, etc. → Article 10

I

infer — Mot-clé qui capture un sous-type inconnu dans un conditional type. T extends Promise<infer U> ? U : never extrait U de la Promise. → Article 02

Invariance — Quand un paramètre de type n'est accepte dans aucun sens (ni covariant ni contravariant). Se produit quand T est en position d'entree et de sortie. → Article 08

K

Key remapping — Syntaxe as dans un mapped type qui permet de renommer ou filtrer les clés. [K in keyof T as NewName]. Disponible depuis TypeScript 4.1. → Article 01

M

Mapped type — Type qui itéré sur les clés d'un autre type avec [K in keyof T] pour construire un nouveau type. Base de Partial, Required, Readonly. → Article 01

Module augmentation — Voir augmentation de module.

N

Naked type parameter — Paramètre de type utilise directement dans un conditional type (pas enveloppe). Declenche la distribution sur les unions. [T] extends [U] désactivé la distribution en enveloppant T. → Article 03

O

Opaque type — Voir branded type.

Overload — Déclaration de plusieurs signatures pour une meme fonction. L'appelant voit les signatures d'overload, pas la signature d'implementation. → Article 09

P

Pattern matching — Technique de programmation qui compare une valeur contre des patterns structurels. En TypeScript, ts-pattern fournit du pattern matching type-safe. → Article 12

Phantom type — Propriété dans un type qui n'existe pas au runtime mais qui differencie les types a la compilation. Utilise dans les branded types (__brand). → Article 05

R

Result pattern — Pattern ou une fonction retourne { ok: true; value: T } | { ok: false; error: E } au lieu de lancer des exceptions. Force l'appelant a gerer les deux cas. → Article 13

S

satisfies — Operateur (TypeScript 4.9) qui vérifié qu'une valeur est compatible avec un type sans perdre la precision de l'inference. value satisfies Type. → Article 06

Symbol — Primitif JavaScript dont chaque instance est unique. Utile comme clés de propriétés sans collision. Symbol("id") !== Symbol("id"). → Article 11

T

Template literal type — Type string construit avec la syntaxe backtick. `prefix_${string}` accepte toute string commencant par "prefix_". Les unions generent le produit cartesien. → Article 04

Type erasure — Processus de compilation ou TypeScript supprime tous les types, interfaces, generics et annotations. Le JavaScript généré n'a aucune trace des types. → Article 14

Type recursif — Type qui se référencé lui-meme pour descendre dans des structures imbriquees. DeepPartial<T> applique Partial recursivement a tous les niveaux. → Article 07

U

unique symbol — Type literal pour un symbol spécifique, obtenu en declarant un symbol comme const. Plus precis que symbol. Garanti unique par le compilateur. → Article 11

V

Variance — Relation entre les sous-types d'un paramètre de type et les sous-types du type qui le contient. Covariant (meme sens), contravariant (sens inverse), invariant (aucun), bivariant (les deux). → Article 08

Variance annotations — Annotations in (contravariant) et out (covariant) sur les paramètres de type. Documentent et verifient la variance. Disponible depuis TypeScript 4.7. → Article 08

W

Well-known symbol — Symbols définis par le standard ECMAScript qui permettent de personnaliser le comportement des objets. Symbol.iterator, Symbol.hasInstance, Symbol.toPrimitive. → Article 11


Article précédent : 14 - Type erasure

Serie précédente : TypeScript — le système de types

Serie suivante : TypeScript — en pratique

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.