TypeScript Academy · Oppitunti

Monikoiden rest-alkiot

Käyttäkää rest-alkioita monikkotyypeissä.

Oppitunti 3/413 vaihetta

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 4

Kiinteä 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]) // true

Keskellä 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 false

Vain 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 10

Rest-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.

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 ”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

  1. Rest-parametrit funktioissa
  2. Spread taulukoissa ja objekteissa
  3. Monikoiden rest-alkiot
  4. Variadisten funktioiden tyypitys
← Takaisin: TypeScript Academy