TypeScript le système de types - 15 - Glossaire

Glossaire des termes lies au système de types 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

any — Type qui désactivé toute vérification du compilateur. Une valeur any peut etre utilisee comme n'importe quel type sans erreur. Se propage à travers les appels de fonctions et contamine les types en cascade. A éviter dans du code nouveau. → Article 01

as const — Assertion qui fige une valeur a son type literal le plus precis et rend toutes les propriétés readonly en profondeur. { port: 3000 } as const a le type { readonly port: 3000 } au lieu de { port: number }. → Article 04

Assertion function — Fonction dont le type de retour est asserts param is Type. Si la condition echoue, elle lance une erreur. Si elle passe, le paramètre est narrow au type indique pour le reste du scope. → Article 08

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

B

Bottom type — Le type le plus restrictif du système de types, auquel aucune valeur ne peut etre assignee. En TypeScript, c'est never. → Article 01

C

Const assertion — Voir as const.

Contrainte (generic constraint) — Restriction imposee a un paramètre de type avec extends. T extends { id: string } signifie que T doit avoir au moins une propriété id de type string. → Article 06

Control flow analysis — Mecanisme par lequel TypeScript analyse le flux de contrôle (if, switch, return, throw) pour narrower les types automatiquement dans chaque branche. → Article 02

D

Deep copy — Copie d'un objet et de tous ses objets imbriques, sans partage de références. structuredClone fait une deep copy. Le spread operator ne fait qu'une shallow copy. → Article 03

DeepReadonly — Type recursif personnalise qui applique readonly a toutes les propriétés d'un objet, y compris les propriétés imbriquees. Pas fourni nativement par TypeScript. → Article 04

Discriminant — Propriété commune a toutes les variantes d'une discriminated union, dont la valeur litterale identifié la variante. Ex: status dans { status: "loading" } | { status: "error"; error: string }. → Article 07

Discriminated union — Type union ou chaque variante a un champ discriminant avec une valeur litterale unique. Le compilateur narrow automatiquement le type dans un switch/if sur ce discriminant. → Article 07

E

Egalite referentielle — Comparaison avec === qui compare les adresses mémoire pour les objets. Deux objets avec le meme contenu sont !== s'ils sont en mémoire a des adresses différentes. → Article 05

Egalite structurelle — Comparaison du contenu de deux objets, propriété par propriété. Pas fournie nativement par JavaScript — nécessité une lib comme fast-deep-equal ou lodash.isEqual. → Article 05

Enum — Construction TypeScript qui definit un ensemble de constantes nommees. Genere du code JavaScript au runtime. Les enums numériques acceptent n'importe quel number, et les enums string refusent les strings brutes. Généralement remplacable par des unions litterales ou as const. → Article 12

Exclude<T, U> — Utility type qui retire de l'union T les membres assignables a U. Exclude<"a" | "b" | "c", "a"> donne "b" | "c". → Article 10

Exhaustive check — Pattern qui utilise never dans le default d'un switch pour garantir que tous les cas d'une union sont geres. Si un cas est oublie, le compilateur refuse. → Article 01

Extract<T, U> — Utility type qui garde de l'union T uniquement les membres assignables a U. Inverse de Exclude. → Article 10

G

Generic — Paramètre de type qui rend une fonction, interface ou classe réutilisable avec différents types. function first<T>(items: T[]): T accepte n'importe quel tableau et retourne le bon type. → Article 06

I

Immutabilite — Propriété d'un objet ou d'une valeur qui ne peut pas etre modifie apres sa création. En TypeScript, obtenue avec readonly, Readonly<T>, as const ou Object.freeze. → Article 04

Index access type — Syntaxe T[K] qui lit le type d'une propriété K dans un type T. User["name"] donne string si name est de type string dans User. → Article 14

Index signature — Syntaxe [key: string]: T qui permet a un objet d'avoir des clés dynamiques d'un certain type. → Article 14

Inference — Capacite de TypeScript a deduire le type d'une expression sans annotation explicite. const x = 42 a le type 42 (literal) sans annotation. → Article 02

Intersection (&) — Operateur de type qui combine deux types. A & B exige que la valeur satisfasse A et B simultanément. Sur des objets, ca ajoute les propriétés des deux types. → Article 11

K

keyof — Operateur de type qui extrait l'union des noms de propriétés d'un type. keyof User donne "id" | "name" | "email". → Article 14

L

Labeled tuple — Tuple dont les positions ont des noms pour la lisibilité. [x: number, y: number] au lieu de [number, number]. Les labels n'affectent pas le comportement. → Article 13

Literal type — Type qui represente une valeur exacte. "active" est un type literal string, 42 est un type literal number, true est un type literal boolean. → Article 02

N

Narrowing — Processus par lequel TypeScript réduit un type large a un type plus precis dans un bloc conditionnel. if (typeof x === "string") narrow x de string | number a string. → Article 02

never — Type qui represente l'absence de valeur. Retour d'une fonction qui lance toujours, ou type dans un default pour vérifier l'exhaustivite. Aucune valeur n'est assignable a never. → Article 01

Non-null assertion (!) — Operateur postfixe qui dit au compilateur qu'une valeur n'est ni null ni undefined. element!.click() supprime le null du type. Unsafe — préféré un check explicite. → Article 09

NonNullable — Utility type qui retire null et undefined d'un type. NonNullable<string | null> donne string. → Article 09

Nullish coalescing (??) — Operateur qui retourne la valeur de droite si la gauche est null ou undefined. Contrairement a ||, ne traite pas 0, "", false comme des absences. → Article 09

O

Omit<T, K> — Utility type qui créé un nouveau type en retirant les propriétés K de T. Omit<User, "id"> donne User sans la propriété id. → Article 10

Optional chaining (?.) — Operateur qui accede a une propriété potentiellement null ou undefined sans crash. user?.address?.city retourne undefined si un maillon est absent. → Article 09

P

Partial — Utility type qui rend toutes les propriétés de T optionnelles. Utile pour les mises à jour partielles. → Article 10

Pick<T, K> — Utility type qui créé un nouveau type en gardant uniquement les propriétés K de T. Pick<User, "name" | "email"> ne garde que name et email. → Article 10

R

Readonly — Utility type qui rend toutes les propriétés de T readonly (premier niveau uniquement). → Article 04

ReadonlyArray — Type de tableau qui retire les méthodes mutantes (push, pop, sort, splice...). Équivalent a readonly T[]. → Article 04

Record<K, V> — Utility type qui créé un objet avec des clés de type K et des valeurs de type V. Record<"admin" | "user", string[]> garantit que les deux clés sont presentes. → Article 10

Référence — En JavaScript, les objets sont manipules par référencé. La variable contient un pointeur vers l'objet en mémoire, pas l'objet lui-meme. Assigner un objet a une autre variable copie le pointeur, pas l'objet. → Article 03

Required — Utility type qui rend toutes les propriétés de T obligatoires. Inverse de Partial. → Article 10

Rest élément — Élément ...T[] dans un tuple qui capture un nombre variable d'éléments. [string, ...number[]] accepte un string suivi de zero ou plusieurs numbers. → Article 13

ReturnType — Utility type qui extrait le type de retour d'une fonction. ReturnType<typeof fn> donne le type que fn retourne. → Article 10

S

Shallow copy — Copie d'un objet qui ne copie que les propriétés de premier niveau. Les objets imbriques sont partages par référencé. Le spread operator (...) et Object.freeze sont shallow. → Article 03

strictNullChecks — Option du tsconfig qui empeche null et undefined d'etre assignables a tous les types. Inclus dans strict: true. Sans cette option, le compilateur ne détecté pas les acces sur des valeurs potentiellement nulles. → Article 09

structuredClone — Fonction JavaScript native qui fait une copie profonde d'un objet. Fonctionne avec les types JSON, Date, Map, Set. Ne copie pas les fonctions ni les prototypes de classes. → Article 03

Structural typing — Système de typage ou la compatibilité est déterminée par la structure (les propriétés), pas par le nom du type. Deux types avec les memes propriétés sont compatibles meme s'ils ont des noms différents. → Article 05

T

Top type — Le type le plus permissif du système de types, auquel toute valeur est assignable. En TypeScript, c'est unknown (et any de manière non safe). → Article 01

Tuple — Tableau a longueur fixe ou chaque position a son propre type. [string, number] accepte exactement deux éléments : un string puis un number. → Article 13

Type guard — Expression ou fonction qui narrow un type dans un bloc conditionnel. Les type guards natifs sont typeof, instanceof, in, et l'egalite. Les custom type guards utilisent is ou asserts. → Article 08

typeof (type operator) — Operateur de type qui capture le type TypeScript d'une valeur. typeof config donne le type de la variable config. Distinct du typeof runtime qui retourne un string. → Article 14

U

Union (|) — Operateur de type qui créé un type acceptant l'un ou l'autre des types. string | number accepte un string ou un number. Tu n'accedes qu'aux propriétés communes sans narrowing. → Article 11

Union litterale — Union de types literals. "active" | "inactive" | "banned" n'accepte que ces trois valeurs exactes. Alternative recommandee aux enums. → Article 12

unknown — Type qui accepte toute valeur mais n'autorise aucune opération sans vérification prealable. A utiliser pour les donnees exterieures (API, JSON, user input) a la place de any. → Article 01

V

Variadic tuple type — Mecanisme permettant de manipuler des tuples avec des generics en utilisant le spread dans les types. [...A, ...B] concatene deux tuples au niveau des types. → Article 13

W

Widening — Processus par lequel TypeScript elargit un type literal a son type de base. let x = "hello" a le type string (pas "hello") parce que x pourrait etre reassigne. Empeche avec const ou as const. → Article 02


Article précédent : 14 - keyof, typeof et index access types

Serie suivante : TypeScript — types avances

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