TypeScript Academy · Lektion

Predikatfunktioner och satisfies-operatorn

Skriv anpassade typvakter med predikat som returtyper och validera objekt med satisfies-operatorn utan att bredda typen.

Lektion 2 av 38 steg

Predikatfunktioner och satisfies-operatorn är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 2 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 3 lektioner.

Introduktion

Mål: Bygg predikatfunktioner som begränsar typer (t.ex. value is T) och använd satisfies för att kontrollera strukturer utan att bredda typen.

  • Egna guards = återanvändbara kontroller vid körning
  • satisfies = kontroll av struktur vid kompilering, bevarar literalvärden

Grunderna i predikat

En predikatfunktion returnerar x is Type. Efter kontrollen är variabelns typ snävare i det omfånget.

function isNumber(x: unknown): x is number {
  return typeof x === "number"
}

function demo(a: unknown) {
  if (isNumber(a)) {
    // inside: a is number
    return a.toFixed(2)
  }
  return "not a number"
}

Strukturkontroll

En guard kontrollerar objektens struktur; om kontrollen godkänns kan värdet behandlas som User och användas säkert.

type User = { id: number; name: string }

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

function printUser(u: unknown) {
  if (isUser(u)) {
    console.log(u.name.toUpperCase())
  } else {
    console.log("invalid user")
  }
}

Över funktionsgränser

Guards säkerställer säker överföring över funktionsgränser: unknown utanför, kontrollerad User inuti.

function fetchAndPrint(json: string) {
  const value: unknown = JSON.parse(json)
  if (isUser(value)) {
    // value narrowed to User
    console.log(`User #${value.id}: ${value.name}`)
  } else {
    console.log("Bad payload")
  }
}

satisfies (konfiguration)

satisfies kontrollerar att uttrycket följer Confige, men bevarar variabelns literaltyp.

type Config = { mode: "dev" | "prod"; retries: number }

const cfg = {
  mode: "prod",
  retries: 3,
  // timeout: 1000, // Error with satisfies if not in type
} satisfies Config

// cfg.mode is still the literal "prod" (not widened to string)
// and adding unknown keys raises an error at compile-time

satisfies (arrayer)

I arrayer valideras elementens strukturer med as const satisfies; literalvärden bevaras och autokompletteringen förbättras.

type Route = { path: `/${string}`; method: "GET" | "POST" }

const routes = [
  { path: "/", method: "GET" },
  { path: "/login", method: "POST" }
] as const satisfies ReadonlyArray<Route>

// each element is checked against Route, literals preserved for DX

Kontroll av satisfies

Snabb kontroll: Vad gör satisfies egentligen?

Sammanfattning

Sammanfattning: Predikat (x is T) utgör kontrakt; satisfies bekräftar strukturen och bevarar literaltyper. Använd båda tillsammans.

Gratis att börja

Lär dig TypeScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
101
Lektioner
352

Vanliga frågor

Är lektionen ”Predikatfunktioner och satisfies-operatorn” gratis?

Ja – hela texten till ”Predikatfunktioner och satisfies-operatorn” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Predikatfunktioner och satisfies-operatorn”?

Skriv anpassade typvakter med predikat som returtyper och validera objekt med satisfies-operatorn utan att bredda typen. Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?

Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.

Hur lång tid tar lektionen ”Predikatfunktioner och satisfies-operatorn”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?

Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Fullständiga switch-satser och never-kontroller
  2. Predikatfunktioner och satisfies-operatorn
  3. Förfina unioner över funktionsgränser
← Tillbaka till TypeScript Academy