TypeScript Academy · Oppitunti

Ehdolliset tyypit: T extends U ? X : Y

Kirjoittakaa tyyppitason if-lauseita ehdollisilla tyypeillä

Oppitunti 3/413 vaihetta

Ehdolliset tyypit: T extends U ? X : Y on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu TypeScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Tervetuloa

Ehdollisilla tyypeillä voitte ilmaista tyyppitasolla toimivia if-lauseita. Ne ovat keskeinen osa TypeScriptin edistynyttä tyyppijärjestelmää, ja niitä käytetään apuohjelmatyyppien rakentamiseen.

Perussyntaksi

Kirjoittakaa T extends U ? X : Y. Jos T voidaan sijoittaa tyyppiin U, tulos on X; muussa tapauksessa Y.
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false

Sisäänrakennettu NonNullable

NonNullable on toteutettu ehdollisella tyypillä, joka poistaa tyypistä T null- ja undefined-arvot.
type NonNullable<T> = T extends null | undefined ? never : T;
type C = NonNullable<string | null>; // string

Ehdolliset tyypit geneeristen tyyppien kanssa

Ehdolliset tyypit ovat hyödyllisimmillään geneeristen funktioiden ja tyyppialias­ten sisällä.
type Flatten<T> = T extends Array<infer I> ? I : T;
type Str = Flatten<string[]>; // string
type Num = Flatten<number>;   // number

Sisäkkäiset ehdot

Ehdollisia tyyppejä voi sijoittaa sisäkkäin monimutkaisempaa logiikkaa varten.
type TypeName<T> =
  T extends string ? 'string' :
  T extends number ? 'number' :
  T extends boolean ? 'boolean' :
  'object';

Unionien jakaminen

Kun T on paljas tyyppiparametri, ehdollinen tyyppi jakautuu unionin jäseniin.
type ToArray<T> = T extends any ? T[] : never;
type R = ToArray<string | number>; // string[] | number[]

Jaon estäminen

Estäkää jakautuminen ympäröimällä T monikkotyypillä.
type NoDistribute<T> = [T] extends [any] ? T[] : never;
type R2 = NoDistribute<string | number>; // (string | number)[]

never-tyypin käyttö suodattamiseen

Ehdollisesta tyypistä palautettu never poistaa unionin jäseniä.
type OnlyStrings<T> = T extends string ? T : never;
type S = OnlyStrings<'a' | 'b' | 1 | 2>; // 'a' | 'b'

Ehdolliset tyypit mapped-tyypeissä

Yhdistämällä mapped- ja ehdolliset tyypit voitte muuntaa olion ominaisuuksia valikoivasti.
type NullableValues<T> = { [K in keyof T]: T[K] extends string ? null : T[K] };

Päättely funktion parametreista

Käyttäkää infer-avainsanaa ehdollisissa tyypeissä monimutkaisten tyyppien osien poimimiseen.
type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type FP = FirstParam<(a: string, b: number) => void>; // string

Sisäänrakennetut ehdolliset apuohjelmat

Monet sisäänrakennetut apuohjelmat (ReturnType, Parameters, InstanceType) on rakennettu ehdollisilla tyypeillä ja infer-avainsanalla.
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

Pikatarkistus

Mikä on lausekkeen `type R = string extends object ? 'yes' : 'no'` tulos?

Kertaus

Ehdolliset tyypit (T extends U ? X : Y) mahdollistavat logiikan tyyppitasolla. Ne jakautuvat unionien jäsenille, toimivat yhdessä infer-avainsanan kanssa tietojen poimimiseen ja muodostavat monien TypeScriptin sisäänrakennettujen apuohjelmatyyppien perustan.
Aloita maksutta

Opi TypeScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
101
Oppitunnit
352

Usein kysytyt kysymykset

Onko oppitunti ”Ehdolliset tyypit: T extends U ? X : Y” ilmainen?

Kyllä – oppitunnin ”Ehdolliset tyypit: T extends U ? X : Y” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko TypeScript Academy-kurssin, päivitä CoddyKit PROhon. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Ehdolliset tyypit: T extends U ? X : Y”?

Kirjoittakaa tyyppitason if-lauseita ehdollisilla tyypeillä Harjoittelet TypeScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni TypeScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin TypeScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Ehdolliset tyypit: T extends U ? X : Y”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä TypeScript Academy-oppitunnilla?

Kyllä. Jokainen TypeScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. keyof ja indeksoidun käytön tyypit
  2. Geneeristen tyyppien rajoitteet: tyyppiparametrien kaventaminen
  3. Ehdolliset tyypit: T extends U ? X : Y
  4. Distributiiviset ehdolliset tyypit
← Takaisin: TypeScript Academy