É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.
É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 messageGardes 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
noImplicitAnyet corrigez d’abord les nouvelles erreurs. - Introduisez des fonctions de garde pour les entrées externes.
- Activez
strictNullCheckset gérez explicitement les valeurs undefined. - Suivez les occurrences restantes de
anyavec 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.
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
- Éliminer any ; privilégier unknown et la réduction
- Appliquer progressivement les indicateurs stricts