unknown
L’équivalent sûr de any : une valeur de type inconnu qu’il faut d’abord vérifier.
Exemple
#function describe(value: unknown): string {
if (typeof value === 'string') return `Chaîne de ${value.length} caractères`
if (typeof value === 'number') return `Nombre ${value.toFixed(1)}`
if (Array.isArray(value)) return `Tableau de ${value.length} éléments`
return 'Autre chose'
}
console.log(describe('CodeWorlds'))
console.log(describe(3.14159))
console.log(describe([1, 2, 3]))Chaîne de 10 caractères Nombre 3.1 Tableau de 3 éléments
Définition et utilisation
#Le type unknown désigne une valeur dont on ne sait rien. Comme avec any, vous pouvez tout lui assigner, mais vous ne pouvez pas l’utiliser avant d’avoir vérifié ce qu’elle est réellement.
Vous la vérifiez par restriction de type : typeof value === "string", Array.isArray(value), value instanceof Date, ou vos propres fonctions de garde de type. Après une telle vérification, le compilateur connaît déjà le type exact à l’intérieur de ce bloc.
C’est le type idéal pour des données venant de l’extérieur : une réponse d’API, le résultat de JSON.parse(), une valeur de localStorage ou l’erreur dans un bloc catch.
Syntaxe
#let value: unknownPlus d’exemples
#const input: unknown = JSON.parse('{"level": 7}')
console.log(input.level)
// Erreur : 'input' is of type 'unknown'.Bonnes pratiques
#- Assignez le résultat de
JSON.parse()àunknown, puis vérifiez la forme des données. Cela protège contre les surprises quand une API change. - Dans
catch (error), l’erreur a le typeunknown. Vérifiezerror instanceof Erroravant de lireerror.message.
Entrées associées
#- any vs unknownany désactive la vérification des types et autorise tout, tandis que unknown accepte aussi toute valeur, mais exige une vérification de type avant de l’utiliser.
- anyLe type qui désactive la vérification : la valeur peut être n’importe quoi.
- neverLe type d’une valeur qui ne se produit jamais : des fonctions qui ne se terminent pas normalement, et des cas impossibles.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.