0Pricing
TypeScript Academy · Lektion

any vermeiden; unknown und Eingrenzung bevorzugen

Ersetzen Sie any durch unknown und Eingrenzungen, ergänzen Sie kleine Guards und Assertionsfunktionen und aktivieren Sie strikte Flags schrittweise, ohne den Build zu unterbrechen.

any vermeiden; unknown und Eingrenzung bevorzugen ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 2. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 2 Lektionen.

Einführung

Ziel: Beseitigen Sie any-Problemstellen. Bevorzugen Sie unknown für nicht vertrauenswürdige Werte und grenzen Sie deren Typ mit einfachen Prüfungen ein. Sie fügen kleine Guards hinzu und aktivieren Schritt für Schritt strikte Compileroptionen.

  • any → unknown
  • Einengung mit typeof/in/instanceof
  • Assertionsfunktionen

any-Fallstricke

any schaltet die Typsicherheit aus: Falsche Strukturen oder Berechnungen mit Zeichenketten werden beim Kompilieren nicht erkannt und schlagen erst später fehl.

// 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 und Einengung

Verwenden Sie unknown für Eingaben von außerhalb. Grenzen Sie den Typ mit Array.isArray und typeof ein und führen Sie anschließend sichere Berechnungen durch.

// 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

Typ-Guards

Erstellen Sie ein Prädikat x is T, um den Typ für aufrufenden Code sauber einzuengen. Halten Sie Guards klein und konzentrieren Sie sie auf strukturelle Prüfungen.

// 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}`
}

Assertionsfunktionen

Assertionsfunktionen (asserts x is T) engen den Typ nach ihrer Ausführung ein. Verwenden Sie sie für erforderliche Vorbedingungen und lösen Sie Ausnahmen mit klaren Meldungen aus.

// 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 für mehr Strenge

Plan:

  • Aktivieren Sie noImplicitAny und beheben Sie zuerst die neuen Fehler.
  • Führen Sie Guards für externe Eingaben ein.
  • Aktivieren Sie strictNullChecks und behandeln Sie undefined explizit.
  • Verfolgen Sie verbleibende any-Verwendungen mit ESLint und reduzieren Sie sie schrittweise.

Prüfung: unknown vs. any

Schnellprüfung: Warum sollten Sie für nicht vertrauenswürdige Daten unknown gegenüber any bevorzugen?

Zusammenfassung

Zusammenfassung: Ersetzen Sie any durch unknown, fügen Sie kleine Guards oder Assertions hinzu und erhöhen Sie die Strenge in kleinen Schritten, damit die Builds erfolgreich bleiben.

Häufig gestellte Fragen

Ist die Lektion „any vermeiden; unknown und Eingrenzung bevorzugen“ kostenlos?

Ja — der vollständige Text von „any vermeiden; unknown und Eingrenzung bevorzugen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 2 Lektionen.

Was lerne ich in „any vermeiden; unknown und Eingrenzung bevorzugen“?

Ersetzen Sie any durch unknown und Eingrenzungen, ergänzen Sie kleine Guards und Assertionsfunktionen und aktivieren Sie strikte Flags schrittweise, ohne den Build zu unterbrechen. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 2.

Wie lange dauert die Lektion „any vermeiden; unknown und Eingrenzung bevorzugen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. any vermeiden; unknown und Eingrenzung bevorzugen
  2. Strikte Flags schrittweise erzwingen
← Zurück zu TypeScript Academy