TypeScript Academy · Oppitunti

Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)

Rajoittakaa merkkijonoja malliliteral-tyypeillä: reittiparametrien mallit, tapahtumanimien nimiavaruudet ja turvalliset rakentajat.

Oppitunti 3/38 vaihetta

Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet) on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/3. 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ä 3 oppituntia.

Johdanto

Tavoite: Mallintakaa merkkijonomuotoja tyypeillä. Template literal -tyypeillä voitte pakottaa käyttöön esimerkiksi mallin "/users/:id" tai "user:created" ja säilyttää samalla hyvän kehittäjäkokemuksen.

  • Rajoittakaa merkkijonoja etu- ja jälkiliitteillä
  • Poimikaa osia infer-tyypillä
  • Rakentakaa turvallisia apuohjelmia

Reittiparametrit

Määrittäkää yksinkertainen reittimalli ja päätelkää parametrin nimi inferillä; käyttäkää never-tyyppiä sääntöä rikkovissa tapauksissa.

type Route = `/${string}`

type RouteWithParam = `/${string}/:${string}`

type ParamOf<R extends string> = R extends `${string}/:${infer P}` ? P : never

// examples
type A = ParamOf<"/users/:id">      // "id"
type B = ParamOf<"/posts/:slug">    // "slug"

Turvallinen reittiapuohjelma

Turvallinen rakennin: Apuohjelma hyväksyy mallit, jotka alkavat merkillä "/"; muut hylätään käännösvaiheessa.

type Path<R extends string> = R extends `/${string}` ? R : never

function route<R extends Path<R>>(r: R) { return r }

const ok = route("/users/:id")    // ok
// const bad = route("users")      // error: must start with "/"

Tapahtumien nimiavaruudet

Rajoittakaa etuliitteet, kuten user: ja order:, ja estäkää virheelliset kenttänimet tyyppien avulla.

type EventName = `user:${string}` | `order:${string}`

function on<E extends EventName>(name: E, cb: (data: unknown) => void) {
  // ... register listener
}

on("user:created", d => {})     // ok
// on("payment:done", d => {})  // error: not an EventName

Tapahtuman osiin jakaminen

Poimikaa kaksi osaa inferillä ja muuntakaa ne tyypitetyiksi kentiksi; virheellisiä muotoja ei tällöin voi esiintyä.

type SplitEvent<E extends string> = E extends `${infer Scope}:${infer Action}` ? { scope: Scope; action: Action } : never

type S = SplitEvent<"user:created">   // { scope: "user"; action: "created" }

type Bad = SplitEvent<"oops">          // never

Vinkkejä

Vinkkejä:

Pidättehän rajoitukset mahdollisimman vähäisinä; liian tiukat mallit pakottavat refaktorointiin.

Yhdistäkää säännöt yhteen paikkaan Builder-funktioilla.

Muistakaa muuntaa taustalla oleva merkkijono unknown-tyyppiseksi dataksi ja validoida se ajonaikaisesti.

Nimiavaruuksien tarkistus

Pikatarkistus: Millä mallilla tapahtumien nimet rajoitetaan kahteen nimiavaruuteen?

Kertaus

Kertaus: Rajoittakaa mallinnettuja merkkijonoja template literal -tyypeillä, erottakaa osia inferillä ja luokaa turvallisia rakenninfunktioita.

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 ”Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)” ilmainen?

Kyllä – oppitunnin ”Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)” 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ä 3 oppituntia.

Mitä opin oppitunnilla ”Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)”?

Rajoittakaa merkkijonoja malliliteral-tyypeillä: reittiparametrien mallit, tapahtumanimien nimiavaruudet ja turvalliset rakentajat. 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/3.

Kuinka kauan ”Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)”-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. Muunnetut tyypit ja +/-readonly sekä +/-?
  2. Avainten uudelleenmäärittely ja malliliteral-tyypit
  3. Merkkijonomallien tyypitys (reittiparametrit ja tapahtumanimet)
← Takaisin: TypeScript Academy