TypeScript Academy · Leçon

unknown contre any : le choix le plus sûr

Découvrez pourquoi unknown vous oblige à vérifier les types avant toute utilisation.

Leçon 3 sur 413 étapes

unknown contre any : le choix le plus sûr est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 4 leçons au total.

Bienvenue

TypeScript 3.0 a introduit le type `unknown`, une solution de remplacement sûre de `any`. Dans cette leçon, vous découvrirez ce qui rend `unknown` plus sûr et quand l'utiliser.

Le problème avec le type quelconque

Avec `any`, TypeScript désactive toutes les vérifications. Vous pouvez appeler des méthodes, accéder à des propriétés et affecter la valeur à des variables typées sans aucune restriction ni sécurité.
let val: any = getData();
val.someMethod(); // TypeScript: OK. Runtime: possible crash

Présentation du type inconnu

`unknown` est le type supérieur sûr. Comme `any`, il peut contenir n'importe quelle valeur. Contrairement à `any`, vous ne pouvez pas l'utiliser sans effectuer d'abord une réduction de type.
let val: unknown = getData();
// val.someMethod(); // Error: Object is of type 'unknown'

Réduire le type inconnu avant utilisation

Pour utiliser une valeur `unknown`, vous devez réduire son type à l'aide d'une vérification de type. TypeScript autorise ensuite les opérations correspondant au type réduit.
let input: unknown = getInput();
if (typeof input === 'string') {
  console.log(input.toUpperCase()); // OK — narrowed to string
}

Le type inconnu n'est pas assignable aux types précis

Vous ne pouvez pas affecter `unknown` à un type précis sans effectuer une vérification ou une assertion. Cela vous oblige à valider la valeur avant de l'utiliser.
let x: unknown = 'hello';
// let s: string = x; // Error
let s: string = x as string; // OK with assertion

Utiliser le type inconnu dans les blocs catch

Dans TypeScript 4.0 et les versions ultérieures, les erreurs interceptées sont par défaut de type `unknown`. Cette approche est plus sûre que l'ancien type `any` par défaut, car elle vous oblige à vérifier le type de l'erreur.
try {
  doSomething();
} catch (err: unknown) {
  if (err instanceof Error) {
    console.log(err.message); // safe
  }
}

Le type inconnu pour les données externes

Lorsque vous analysez du JSON ou recevez des données d'une API, attribuez-leur d'abord le type `unknown`, puis validez-les avant de les utiliser.
const raw: unknown = JSON.parse(text);
if (
  typeof raw === 'object' &&
  raw !== null &&
  'name' in raw
) {
  console.log((raw as any).name);
}

Gardiens de type avec le type inconnu

Les gardiens de type définis par l'utilisateur fonctionnent parfaitement avec `unknown` et vous permettent de valider des structures complexes avant de les utiliser.
function isUser(val: unknown): val is { name: string } {
  return typeof val === 'object' && val !== null && 'name' in val;
}

Type inconnu ou jamais

`unknown` est le type supérieur : tous les types lui sont assignables. `never` est le type inférieur : rien ne lui est assignable. Ce sont des opposés.
// unknown: anything can be assigned to it
let a: unknown = 42; // OK

// never: nothing can be assigned to it
function fail(): never { throw new Error(); }

Choisir entre le type quelconque et le type inconnu

Utilisez `unknown` lorsque vous recevez des données dont le type n'est pas déterminé (JSON, saisie utilisateur, API externes). Utilisez `any` uniquement en dernier recours, pendant une migration ou avec des bibliothèques dépourvues de types.

Bibliothèques de validation à l'exécution

Des bibliothèques comme Zod, Valibot et io-ts s'associent parfaitement à `unknown`. Elles analysent et valident les données, puis renvoient une valeur correctement typée à partir d'une entrée `unknown`.
import { z } from 'zod';
const UserSchema = z.object({ name: z.string(), age: z.number() });
const user = UserSchema.parse(unknownData); // throws if invalid

Vérification rapide

Que devez-vous faire avant de pouvoir utiliser une valeur `unknown` dans TypeScript ?

Récapitulatif

`unknown` est une solution sûre de remplacement de `any`. Il accepte n'importe quelle valeur, mais vous oblige à réduire le type avant son utilisation. Utilisez-le pour les données externes, les blocs catch et toute situation où le type est réellement inconnu.
Gratuit pour commencer

Apprends TypeScript avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
101
Leçons
352

Questions Fréquemment Posées

La leçon « unknown contre any : le choix le plus sûr » est-elle gratuite ?

Oui — le texte complet de « unknown contre any : le choix le plus sûr » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « unknown contre any : le choix le plus sûr » ?

Découvrez pourquoi unknown vous oblige à vérifier les types avant toute utilisation. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer TypeScript Academy ?

Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « unknown contre any : le choix le plus sûr » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?

Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Types primitifs : string, number, boolean
  2. Le type any et pourquoi l’éviter
  3. unknown contre any : le choix le plus sûr
  4. null, undefined et vérifications strictes de nullité
← Retour à TypeScript Academy