TypeScript Academy · Oppitunti

Predikaattifunktiot ja satisfies-operaattori

Kirjoittakaa omia tyyppivartijoita predikaattipalautustyypeillä ja validoikaa olioita satisfies-operaattorilla ilman tyypin laajentumista.

Oppitunti 2/38 vaihetta

Predikaattifunktiot ja satisfies-operaattori on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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: Rakentakaa predikaattifunktioita, jotka rajaavat tyyppejä (esimerkiksi value is T), ja käyttäkää satisfies-operaattoria rakenteiden tarkistamiseen ilman tyypin laajentamista.

  • Mukautetut tyyppivartijat = uudelleenkäytettäviä ajonaikaisia tarkistuksia
  • satisfies = käännösaikainen rakenteen tarkistus, joka säilyttää literaalit

Predikaattien perusteet

Predikaattifunktio palauttaa arvon x is Type. Tarkistuksen jälkeen muuttujan tyyppi rajataan kyseisessä lohkossa.

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"
}

Rakenteen tyyppivartija

Tyyppivartija tarkistaa olioiden rakenteen. Jos tarkistus onnistuu, tyyppi rajataan User-tyypiksi ja arvoa voidaan käyttää turvallisesti.

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")
  }
}

Rajoja ylittäen

Tyyppivartijat varmistavat turvallisen tiedonsiirron funktioiden rajojen yli: ulkopuolella arvo on unknown ja sisäpuolella hallittu User.

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 (määritys)

satisfies tarkistaa, että lauseke noudattaa Confige-rakennetta, mutta säilyttää muuttujan literaalityypin.

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 (taulukot)

Taulukoissa alkioiden rakenteet validoidaan rakenteella as const satisfies; literaaliarvot säilyvät ja automaattinen täydennys paranee.

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

satisfies-tarkistus

Pikatarkistus: Mitä satisfies oikeastaan tekee?

Kertaus

Kertaus: Predikaatit (x is T) muodostavat sopimuksen; satisfies vahvistaa muodon ja säilyttää literaalityypit. Käyttäkää molempia yhdessä.

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 ”Predikaattifunktiot ja satisfies-operaattori” ilmainen?

Kyllä – oppitunnin ”Predikaattifunktiot ja satisfies-operaattori” 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 ”Predikaattifunktiot ja satisfies-operaattori”?

Kirjoittakaa omia tyyppivartijoita predikaattipalautustyypeillä ja validoikaa olioita satisfies-operaattorilla ilman tyypin laajentumista. 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/3.

Kuinka kauan ”Predikaattifunktiot ja satisfies-operaattori”-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. Kattavat switch-rakenteet ja never-tarkistukset
  2. Predikaattifunktiot ja satisfies-operaattori
  3. Unionien tarkentaminen funktiorajojen yli
← Takaisin: TypeScript Academy