TypeScriptGénériques et types avancés
Paramètres de type par défaut
La valeur que prend un paramètre de type quand il n’est ni fourni ni déduit.
Exemple
#TypeScript
type ApiResult<TData = unknown, TError = string> =
| { ok: true; data: TData }
| { ok: false; error: TError }
const plain: ApiResult = { ok: false, error: 'timeout' }
const typed: ApiResult<number[]> = { ok: true, data: [1, 2, 3] }
console.log(plain.ok ? 'données' : plain.error)
console.log(typed.ok ? typed.data.length : 0)Résultat
timeout 3
Définition et utilisation
#Un paramètre de type peut avoir une valeur par défaut, notée comme dans les fonctions : type Response<T = unknown>. Si quelqu’un utilise le type sans fournir le paramètre, la valeur par défaut est utilisée.
Cela facilite l’usage des types génériques dans les cas simples, sans perdre en flexibilité dans les cas complexes. C’est ainsi que fonctionne par exemple Promise dans de nombreuses bibliothèques, ou les types des composants React.
Les paramètres avec des valeurs par défaut doivent venir après les paramètres requis, et la valeur par défaut doit respecter une éventuelle contrainte extends.
Syntaxe
#Syntaxe
type Name<T = DefaultType> = …
function f<T = DefaultType>() { … }Bonnes pratiques
#- Les paramètres de type par défaut sont un bon endroit pour
unknown, qui impose de vérifier les données, plutôt queany. - Placez les paramètres les plus souvent modifiés au début de la liste, et ceux avec des valeurs par défaut sensées à la fin.
Entrées associées
#- Génériques <T>Types et fonctions avec un paramètre de type, qui fonctionnent pour plusieurs types sans perdre en précision.
- Contraintes génériques (extends)Exiger qu’un paramètre de type respecte une forme précise.
- unknownL’équivalent sûr de any : une valeur de type inconnu qu’il faut d’abord vérifier.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.