TypeScript Academy · Oppitunti

Mapped-tyyppien muuntimet: readonly ja ?

Lisätkää tai poistakaa muuntimia +/--merkeillä mapped-tyypeissä

Oppitunti 2/413 vaihetta

Mapped-tyyppien muuntimet: readonly ja ? on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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

Mapped-tyypeillä voi lisätä tai poistaa ominaisuuksien `readonly`- ja valinnaisuusmääritteet (`?`) `+`- ja `-`-etuliitteillä.

Määritteiden lisääminen +-etuliitteellä

`+`-etuliite (joka on oletusarvoisesti implisiittinen) lisää määritteen jokaiseen mapped-tyypin ominaisuuteen.
type Readonly<T> = { +readonly [K in keyof T]: T[K] }; // + is implicit
type Optional<T> = { [K in keyof T]+?: T[K] };

readonly-määritteen poistaminen --etuliitteellä

Käyttäkää `-readonly`-merkintää readonly-määritteen poistamiseen ominaisuuksista.
type Mutable<T> = { -readonly [K in keyof T]: T[K] };
const mutableUser: Mutable<Readonly<User>> = { id: 1, name: 'Alice' };
mutableUser.id = 2; // OK now

?-määritteen poistaminen --etuliitteellä

Käyttäkää `-?`-merkintää valinnaisuusmääritteen poistamiseen, jolloin kaikista ominaisuuksista tulee pakollisia.
type Required<T> = { [K in keyof T]-?: T[K] };
// Now all optional properties become required

- ja -?-etuliitteiden yhdistäminen

Voitte yhdistää molemmat poistot luodaksenne tyypistä muokattavan ja pakolliset ominaisuudet sisältävän version.
type Concrete<T> = { -readonly [K in keyof T]-?: T[K] };

Partial ja Required ovat vastakohtia

Partial lisää `?`-määritteen `+?`-merkinnällä. Required poistaa sen `-?`-merkinnällä.
// From TypeScript lib:
type Partial<T> = { [K in keyof T]?: T[K] };   // adds ?
type Required<T> = { [K in keyof T]-?: T[K] };  // removes ?

Määritteiden säilyttäminen oletusarvoisesti

Ilman eksplisiittistä +- tai --etuliitettä mapped-tyypit säilyttävät lähdetyypin olemassa olevat määritteet.
interface User { readonly id: number; name?: string; }
type Copy<T> = { [K in keyof T]: T[K] };
type C = Copy<User>; // readonly id preserved, name? preserved

Käytännön esimerkki: Patch-tyyppi

Luokaa Patch-tyyppi, joka tekee kaikista ominaisuuksista valinnaisia ja poistaa readonly-määritteen päivityksiä varten.
type Patch<T> = { -readonly [K in keyof T]?: T[K] };

DeepReadonly

Käyttäkää readonly-määritettä rekursiivisesti mapped-tyypin sisällä olevan ehdollisen tyypin avulla.
type DeepReadonly<T> = {
  readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K]
};

DeepPartial

Vastaavasti käyttäkää ?-määritettä rekursiivisesti luodaksenne tyypin, jonka kaikki ominaisuudet ovat syvästi valinnaisia.
type DeepPartial<T> = {
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
};

Määritteiden yhdistelmien taulukko

+readonly = lisää readonly-määritteen. -readonly = poistaa readonly-määritteen. +? = lisää valinnaisuuden. -? = poistaa valinnaisuuden. Kaikki neljä voidaan yhdistää.

Pikatarkistus

Mitä `{ [K in keyof T]-?: T[K] }` tuottaa?

Kertaus

Käyttäkää readonly- ja ?-määritteiden edessä +/--etuliitteitä niiden eksplisiittiseen lisäämiseen tai poistamiseen mapped-tyypeissä. -? toteuttaa Required-tyypin ja -readonly Mutable-tyypin. Yhdistämällä molemmat saatte täydellisen hallinnan muokattavuuteen.
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 ”Mapped-tyyppien muuntimet: readonly ja ?” ilmainen?

Kyllä – oppitunnin ”Mapped-tyyppien muuntimet: readonly ja ?” 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 ”Mapped-tyyppien muuntimet: readonly ja ?”?

Lisätkää tai poistakaa muuntimia +/--merkeillä mapped-tyypeissä 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 2/4.

Kuinka kauan ”Mapped-tyyppien muuntimet: readonly ja ?”-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. Mapped-tyypit: oliotyyppien muuntaminen
  2. Mapped-tyyppien muuntimet: readonly ja ?
  3. Template literal -tyypit: merkkijonomallit
  4. Avainten uudelleennimeäminen as-syntaksilla mapped-tyypeissä
← Takaisin: TypeScript Academy