Predikaattifunktiot ja satisfies-operaattori
Kirjoittakaa omia tyyppivartijoita predikaattipalautustyypeillä ja validoikaa olioita satisfies-operaattorilla ilman tyypin laajentumista.
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-timesatisfies (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 DXsatisfies-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ä.
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
- Kattavat switch-rakenteet ja never-tarkistukset
- Predikaattifunktiot ja satisfies-operaattori
- Unionien tarkentaminen funktiorajojen yli