satisfies ja tyyppimerkintä
Säilyttäkää literaalien päättely ja tarkistakaa samalla rakenteen oikeellisuus.
satisfies ja tyyppimerkintä 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.
Tyyppimerkintämalli
Klassinen malli const config: Type = {...} validoi olion, mutta muuttujan tyypiksi tulee Type, mikä laajentaa kaikki sen sisältämät literaalit.
type Config = { mode: string; level: number };
const config: Config = { mode: "dark", level: 5 };
// config.mode has type string
console.log(config.mode);Miltä tyypin laajeneminen näyttää
Tyyppimerkinnän kanssa config.mode on tyyppiä string. Ette voi sijoittaa sitä muuttujaan, joka odottaa literaalia "dark".
type Config = { mode: string };
const config: Config = { mode: "dark" };
// const m: "dark" = config.mode; // Error: string not assignable to "dark"
console.log(config.mode);satisfies-malli
Kun käytätte muotoa const config = {...} satisfies Type, muuttuja säilyttää täsmällisen päätellyn tyyppinsä, mutta se tarkistetaan edelleen tyyppiä Type vasten.
type Config = { mode: string; level: number };
const config = { mode: "dark", level: 5 } satisfies Config;
// config.mode has type "dark"
console.log(config.mode);Täsmällinen päättely säilyy
Nyt config.mode on literaali "dark", joten se toimii kaikkialla, missä tarvitaan kapeaa tyyppiä.
type Config = { mode: string };
const config = { mode: "dark" } satisfies Config;
const m: "dark" = config.mode; // OK
console.log(m);Molemmat validoivat edelleen
Molemmat mallit hylkäävät virheelliset oliot. Ero on ainoastaan tuloksena syntyvässä muuttujan tyypissä, ei siinä, tapahtuuko validointi.
type Config = { level: number };
// const a: Config = { level: "x" }; // Error
// const b = { level: "x" } satisfies Config; // Error
const ok = { level: 3 } satisfies Config;
console.log(ok.level);Ylimääräiset ominaisuudet havaitaan
Tyyppimerkintöjen tavoin satisfies ilmoittaa kohdetyyppiin kuulumattomista ylimääräisistä ominaisuuksista ja auttaa siten havaitsemaan avainten kirjoitusvirheet.
type Config = { mode: string };
// const c = { mode: "dark", extar: true } satisfies Config; // Error: extar
const c = { mode: "dark" } satisfies Config;
console.log(c.mode);Tuple-tyypin säilyttäminen
satisfies auttaa taulukoita säilyttämään tuple-tyyppisen täsmällisyyden, kun sitä käytetään yhdessä as const-lausekkeen kanssa, ja validoi samalla alkioiden tyypit.
type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
// xs is a readonly tuple [1, 2, 3], validated as numbers
console.log(xs.length);Tyyppimerkintä laajentaa unionin jäseniä
Jos kenttä on unioni, kuten "a" | "b", unioniksi tyypitetty tyyppimerkintä säilyttää sen unionina, mutta laajempi kentän tyyppi laajentaa sitä. satisfies kiinnittää täsmällisen jäsenen.
type Config = { tier: string };
const withAnn: Config = { tier: "pro" }; // tier: string
const withSat = { tier: "pro" } satisfies Config; // tier: "pro"
console.log(withAnn.tier, withSat.tier);Automaattisen täydennyksen säilyttäminen luettaessa
Koska satisfies säilyttää literaaliavaimet ja -arvot, editorit voivat tarjota automaattisen täydennyksen täsmällisen olion eivätkä laajemman ilmoitetun tyypin perusteella.
type Theme = Record<string, string>;
const theme = { bg: "black", fg: "white" } satisfies Theme;
// theme.<autocomplete shows bg and fg>
console.log(theme.bg, theme.fg);Valinta vaihtoehtojen välillä
Käyttäkää tavallista tyyppimerkintää, kun todella haluatte laajemman tyypin. Käyttäkää satisfies-operaattoria, kun haluatte validoinnin mutta tarvitsette myöhemmin myös täsmällisen päätellyn rakenteen.
type Config = { mode: string };
// Want wide type for reassignment flexibility -> annotation
let a: Config = { mode: "dark" };
// Want exact literals for later indexing -> satisfies
const b = { mode: "dark" } satisfies Config;
console.log(a.mode, b.mode);Yhteenveto rinnakkain
Tyyppimerkintä laajentaa, satisfies säilyttää. Molemmat validoivat. Muuttumattomille konfiguraatioille, joista luetaan tietoja, satisfies on yleensä parempi oletusvalinta.
type C = { color: string; size: number };
const widened: C = { color: "red", size: 1 };
const exact = { color: "red", size: 1 } satisfies C;
console.log(widened.color, exact.color);Pikatarkistus: satisfies ja tyyppimerkintä
Testatkaa ymmärrystänne niiden erosta.
Kertaus: satisfies ja tyyppimerkintä
Tyyppimerkintä validoi, mutta laajentaa literaalit perustyypeikseen. satisfies-operaattori validoi ja säilyttää täsmällisen päättelyn, mukaan lukien literaaliarvot, avaimet ja tuple-tarkkuuden.
type C = { mode: string };
const c = { mode: "dark" } satisfies C;
const exact: "dark" = c.mode;
console.log(exact);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 ”satisfies ja tyyppimerkintä” ilmainen?
Kyllä – oppitunnin ”satisfies ja tyyppimerkintä” 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 ”satisfies ja tyyppimerkintä”?
Säilyttäkää literaalien päättely ja tarkistakaa samalla rakenteen oikeellisuus. 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 ”satisfies ja tyyppimerkintä”-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
- Miksi satisfies on olemassa
- satisfies ja tyyppimerkintä
- satisfies ja as-väite
- satisfies-käytännön mallit