TypeScript Academy · leksjon

Betingede typer: T extends U ? X : Y

Skriv if-setninger på typenivå med betingede typer.

Leksjon 3 av 413 trinn

Betingede typer: T extends U ? X : Y er en gratis leksjon i TypeScript Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i TypeScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Velkommen

Betingede typer lar deg uttrykke if-setninger på typenivå. De er en sentral del av TypeScripts avanserte typesystem og brukes til å bygge verktøytyper.

Grunnleggende syntaks

Skriv T extends U ? X : Y. Hvis T kan tilordnes til U, blir resultatet X; ellers blir det Y.
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false

Den innebygde typen NonNullable

NonNullable er implementert med en betinget type som fjerner null og undefined fra T.
type NonNullable<T> = T extends null | undefined ? never : T;
type C = NonNullable<string | null>; // string

Betingede typer med generiske typer

Betingede typer er mest nyttige inne i generiske funksjoner og typealiaser.
type Flatten<T> = T extends Array<infer I> ? I : T;
type Str = Flatten<string[]>; // string
type Num = Flatten<number>;   // number

Nestede betingelser

Betingede typer kan nestes for mer kompleks logikk.
type TypeName<T> =
  T extends string ? 'string' :
  T extends number ? 'number' :
  T extends boolean ? 'boolean' :
  'object';

Distribusjon over unioner

Når T er et nakent typeparameter, distribueres en betinget type over medlemmene i unionen.
type ToArray<T> = T extends any ? T[] : never;
type R = ToArray<string | number>; // string[] | number[]

Hindre distribusjon

Pakk T inn i en tuppel for å hindre distribusjon.
type NoDistribute<T> = [T] extends [any] ? T[] : never;
type R2 = NoDistribute<string | number>; // (string | number)[]

Bruke never til filtrering

Når en betinget type returnerer never, fjernes unionmedlemmene.
type OnlyStrings<T> = T extends string ? T : never;
type S = OnlyStrings<'a' | 'b' | 1 | 2>; // 'a' | 'b'

Betingede typer i mappede typer

Kombiner mappede typer og betingede typer for å transformere objektegenskaper selektivt.
type NullableValues<T> = { [K in keyof T]: T[K] extends string ? null : T[K] };

Utledning fra funksjonsparametere

Bruk infer i betingede typer for å trekke ut deler av komplekse typer.
type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type FP = FirstParam<(a: string, b: number) => void>; // string

Innebygde betingede verktøytyper

Mange innebygde verktøytyper (ReturnType, Parameters, InstanceType) er bygget med betingede typer og infer.
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

Kunnskapssjekk

Hva blir resultatet av `type R = string extends object ? 'yes' : 'no'`?

Oppsummering

Betingede typer (T extends U ? X : Y) muliggjør logikk på typenivå. De distribueres over unioner, fungerer sammen med infer for utledning og danner grunnlaget for mange av TypeScripts innebygde verktøytyper.
Gratis å komme i gang

Lær deg TypeScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
101
Leksjoner
352

Ofte stilte spørsmål

Er leksjonen «Betingede typer: T extends U ? X : Y» gratis?

Ja – hele teksten i «Betingede typer: T extends U ? X : Y» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av TypeScript Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Betingede typer: T extends U ? X : Y»?

Skriv if-setninger på typenivå med betingede typer. Du øver på TypeScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med TypeScript Academy?

Ingen tidligere erfaring er nødvendig. TypeScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Betingede typer: T extends U ? X : Y»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne TypeScript Academy-leksjonen?

Ja. Alle TypeScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. keyof og indekserte tilgangstyper
  2. Generiske begrensninger: snevre inn typeparametere
  3. Betingede typer: T extends U ? X : Y
  4. Distribuerende betingede typer
← Tilbake til TypeScript Academy