TypeScript Academy · Leçon

Éliminer any ; privilégier unknown et la réduction

Remplacez any par unknown et une réduction ; ajoutez de petites gardes et des fonctions d’assertion ; activez progressivement les options strictes sans interrompre la compilation.

Leçon 1 sur 28 étapes

Éliminer any ; privilégier unknown et la réduction est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 2. 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 2 leçons au total.

Introduction

Objectif : supprimer les zones sensibles liées à any. Préférez unknown pour les valeurs non fiables et réduisez leur type à l’aide de vérifications simples. Vous ajouterez de petites fonctions de garde et activerez progressivement les options strictes.

  • any → unknown
  • Réduction avec typeof/in/instanceof
  • Fonctions d’assertion

Pièges liés à any

any désactive la sécurité : les mauvaises structures ou les calculs entre chaînes passent la compilation, puis échouent plus tard.

// any hides bugs
function avgBad(values: any): number {
  // Compiles even if values is not an array of numbers
  return values.reduce((a: number, b: number) => a + b, 0) / values.length
}

// Runtime crash examples:
// avgBad(123)
// avgBad(["1","2"]) // string addition!

unknown et réduction de type

Utilisez unknown pour les entrées provenant de l’extérieur. Réduisez leur type avec Array.isArray et typeof, puis effectuez les calculs en toute sécurité.

// unknown forces checks
function avg(values: unknown): number {
  if (!Array.isArray(values)) throw new Error("values must be an array")
  const nums = values.filter((v): v is number => typeof v === "number")
  if (nums.length === 0) throw new Error("no numbers")
  const sum = nums.reduce((a, b) => a + b, 0)
  return sum / nums.length
}

// avg([1,2,3]) → 2; avg("oops") throws early with a clear message

Gardes de type

Créez un prédicat x is T pour réduire proprement le type chez les appelants. Gardez les fonctions de garde petites et centrées sur les vérifications structurelles.

// Small predicate to reuse narrowing
export type User = { id: string; name: string }

export function isUser(x: unknown): x is User {
  return typeof x === "object" && x !== null
    && typeof (x as any).id === "string"
    && typeof (x as any).name === "string"
}

export function hello(x: unknown) {
  if (!isUser(x)) throw new Error("invalid user")
  return `Hello, ${x.name}`
}

Fonctions d’assertion

Les fonctions d’assertion (asserts x is T) réduisent le type après leur exécution. Utilisez-les pour les préconditions obligatoires et déclenchez une exception avec des messages clairs.

// Assertion function throws or narrows
function assertUser(x: unknown): asserts x is { id: string; name: string } {
  if (typeof x !== "object" || x === null) throw new Error("not an object")
  const o = x as Record<string, unknown>
  if (typeof o.id !== "string" || typeof o.name !== "string") throw new Error("bad user")
}

export function greetUnsafe(x: unknown) {
  assertUser(x) // now x is narrowed after this call
  return `Hi ${x.name}`
}

Plan de rigueur

Plan :

  • Activez noImplicitAny et corrigez d’abord les nouvelles erreurs.
  • Introduisez des fonctions de garde pour les entrées externes.
  • Activez strictNullChecks et gérez explicitement les valeurs undefined.
  • Suivez les occurrences restantes de any avec ESLint et réduisez-les progressivement.

Vérification de unknown et any

Vérification rapide : pourquoi préférer unknown à any pour les données non fiables ?

Récapitulatif

Récapitulatif : remplacez any par unknown, ajoutez de petites fonctions de garde ou des assertions, et activez progressivement les options strictes pour conserver des compilations fonctionnelles.

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 « Éliminer any ; privilégier unknown et la réduction » est-elle gratuite ?

Oui — le texte complet de « Éliminer any ; privilégier unknown et la réduction » 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 2 leçons au total.

Qu'est-ce que j'apprendrai dans « Éliminer any ; privilégier unknown et la réduction » ?

Remplacez any par unknown et une réduction ; ajoutez de petites gardes et des fonctions d’assertion ; activez progressivement les options strictes sans interrompre la compilation. 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 1 sur 2.

Combien de temps prend la leçon « Éliminer any ; privilégier unknown et la réduction » ?

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. Éliminer any ; privilégier unknown et la réduction
  2. Appliquer progressivement les indicateurs stricts
← Retour à TypeScript Academy