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
AwaitedPromise<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
DeepReadonlyreadonly 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
NonNullablenull 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
PartialT 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
ReadonlyT readonly (premier niveau uniquement). → Article 04
ReadonlyArraypush, 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
RequiredT 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
ReturnTypeReturnType<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