Monikoiden rest-alkiot
Käyttäkää rest-alkioita monikkotyypeissä.
Monikoiden rest-alkiot on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.
Vaihtelevan pituiset tuplet
Tupleilla on yleensä kiinteä pituus, mutta rest-elementin avulla yksi paikka voi vastaanottaa miten monta alkiota tahansa. Näin voidaan mallintaa tietoja, jotka ovat osittain kiinteitä ja osittain vaihtelevia.
Lopussa oleva rest-elementti
Kirjoittakaa [string, ...number[]] tarkoittamaan yhtä merkkijonoa ja sen jälkeen nollaa tai useampaa lukua. Ensimmäinen paikka on kiinteä, ja loppuosa voi kasvaa vapaasti.
type Row = [string, ...number[]]
const r: Row = ["scores", 9, 8, 7]
console.log(r[0], r.length) // scores 4Kiinteä osa on pakollinen
Alussa olevien kiinteiden alkioiden on oltava mukana. Rest-osa voi olla tyhjä, mutta kiinteitä paikkoja ei voi ohittaa.
type Row = [string, ...number[]]
const min: Row = ["label"] // ok, zero numbers
// const bad: Row = [] // Error: missing string
console.log(min)Alussa oleva rest-elementti
Rest-elementti voi olla myös ensimmäisenä, ja sen jälkeen voi olla kiinteitä alkioita. Näin voidaan mallintaa vaihteleva alkuosa ja sen jälkeinen kiinteä loppuosa.
type Trailing = [...number[], boolean]
const t: Trailing = [1, 2, 3, true]
console.log(t[t.length - 1]) // trueKeskellä oleva rest-elementti
Rest-elementti voi olla keskellä kiinteiden alku- ja loppualkioiden välissä. TypeScript päättelee, mitkä paikat ovat kiinteitä kummassakin päässä.
type Middle = [string, ...number[], boolean]
const m: Middle = ["start", 1, 2, false]
console.log(m[0], m[m.length - 1]) // start falseVain yksi rest-elementti tuplessa
Tuplessa voi olla enintään yksi rest-elementti. Kaksi rest-elementtiä tekisi alkioiden paikoista epäselviä, joten niitä ei sallita.
// type Bad = [...string[], ...number[]] // Error: only one rest allowed
type Ok = [string, ...number[]]
const o: Ok = ["x", 1]
console.log(o)Rest-tuplen destrukturointi
Destrukturointi sopii täydellisesti yhteen tuplen rest-elementtien kanssa. Kiinteät sidonnat käyttävät kiinteitä paikkoja, ja rest-sidonta ottaa vaihtelevan osan talteen tyypitettynä taulukkona.
type Row = [string, ...number[]]
const row: Row = ["scores", 9, 8]
const [label, ...values] = row
console.log(label, values) // scores [9, 8]Nimetyt tuple-alkiot
Voitte nimetä tuplen paikkoja dokumentointia varten. Nimet näkyvät työkaluvihjeissä ja allekirjoituksissa, mutta eivät muuta ajonaikaisia arvoja.
type Range = [start: number, end: number]
const span: Range = [0, 10]
console.log(span[0], span[1]) // 0 10Rest-elementtien nimet
Rest-elementeille voi myös antaa nimet. Tämä on erityisen hyödyllistä funktion parametrien tuplissa, koska vihjeistä tulee helpommin luettavia.
type Args = [command: string, ...flags: string[]]
const a: Args = ["build", "--watch", "--minify"]
console.log(a[0], a.slice(1))Rest-tuplet parametriluetteloina
Rest-elementin sisältävä tuple voi kuvata funktion parametriluettelon, mikä mahdollistaa spreadin avulla täsmälliset kiinteästä osasta ja sitä seuraavasta vaihtelevasta osasta koostuvat allekirjoitukset.
type Params = [name: string, ...scores: number[]]
function report(...args: Params): string {
const [name, ...scores] = args
return name + ": " + scores.join(",")
}
console.log(report("Ada", 9, 8))Miksi rest-tuplet ovat tärkeitä
Rest-tuplilla voi ilmaista rakenteita, joita tavalliset taulukot eivät pysty kuvaamaan: pakollinen alkuosa ja vaihteleva runko, vaihteleva runko ja pakollinen loppuosa tai molemmat. Ne ovat variadisten funktioiden tyypityksen perusta.
type CSVRow = [id: number, ...fields: string[]]
const row: CSVRow = [1, "Ada", "Engineer"]
console.log(row[0], row.slice(1))Pikatarkistus
Testatkaa, miten hyvin ymmärrätte tuplen rest-elementit.
Kertaus
Tuplen rest-elementti (...T[]) antaa yhden paikan vastaanottaa miten monta alkiota tahansa, kun taas kiinteät alku- ja loppualkiot pysyvät pakollisina. Rest-elementti voi olla lopussa, alussa tai keskellä, mutta tuplessa sallitaan vain yksi rest-elementti. Destrukturointi vastaa näitä rakenteita, nimet tekevät vihjeistä helpommin luettavia, ja rest-tuplet muodostavat variadisten funktioiden tyypityksen perustan.
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 ”Monikoiden rest-alkiot” ilmainen?
Kyllä – oppitunnin ”Monikoiden rest-alkiot” 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 ”Monikoiden rest-alkiot”?
Käyttäkää rest-alkioita monikkotyypeissä. 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/4.
Kuinka kauan ”Monikoiden rest-alkiot”-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
- Rest-parametrit funktioissa
- Spread taulukoissa ja objekteissa
- Monikoiden rest-alkiot
- Variadisten funktioiden tyypitys