Tuplen rest-alkiot ja curryn tyypit
Käyttäkää tuplen rest-alkioita mielivaltaisten argumenttilistojen tallentamiseen ja rakentakaa pieniä curry-apufunktioita tyyppipäätelmän avulla.
Tuplen rest-alkiot ja curryn tyypit on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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: Mallintakaa argumenttiluetteloita variadic-tupleilla ja kirjoittakaa pieni mutta hyödyllinen curry-apuohjelma. Näin API:t pysyvät joustavina ja tyyppiturvallisuus säilyy.
Variadic-tuplejen perusteet
Malli [...A, L]: ensin tulevat alkuosan argumentit (A-tuple) ja sitten viimeinen argumentti (L). Se on apuohjelmien perusta.
type HeadTail<A extends any[], L> = [...A, L]
function callWithLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R, last: L, ...head: A): R {
return fn(...head, last)
}
// Example
function join3(a: string, b: number, c: boolean) { return `${a}-${b}-${c}` }
const r = callWithLast(join3, true, "x", 42) // ok → stringCurry-apuohjelma
Pieni curry-apuohjelma: [...A, L] -mallin ansiosta sekä alkuosan että viimeisen argumentin tyypit ovat oikein.
function curryLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R) {
return (last: L) => (...head: A) => fn(...head, last)
}
const curried = curryLast(join3)
const out = curried(true)("x", 42) // stringYleinen curryFromFn
Yleinen ratkaisu: Päätelkää Tail ja Last tyypistä Parameters<F>, jolloin parametrien määrä ja niiden tyypit säilyvät.
type Fn = (...args: any[]) => any
type Tail<T extends any[]> = T extends [...infer H, any] ? H : never
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never
function curryFromFn<F extends Fn>(fn: F) {
type A = Tail<Parameters<F>>
type L = Last<Parameters<F>>
return (last: L) => (...head: A) => fn(...head, last)
}
const cur = curryFromFn(join3)
const o2 = cur(true)("x", 42) // still stringYhdistäminen tupleilla
Kuljettakaa arvot muodossa A → B → C compose-apuohjelmalla: A-tuplen argumentit säilyvät ja palautustyypit ketjuttuvat.
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function len(a: string, b: number) { return `${a}${b}`.length }
function isEven(n: number) { return n % 2 === 0 }
const comp = compose(isEven, len)
const ok = comp("id", 99) // booleanVinkkejä
Vinkkejä:
Variadic-tuplet edellyttävät TS 4.0 -versiota tai uudempaa, joten pitäkää kohdeympäristö ajan tasalla.
Ohjatkaa kääntäjää: joskus tyypin päättely paranee, kun kirjoitatte tyyppiparametrit eksplisiittisesti.
Liiallinen yleistäminen lisää API-suunnittelun monimutkaisuutta; yksinkertaiset apuohjelmat ovat tehokkaimpia.
Curry-allekirjoituksen tarkistus
Pikatarkistus: Mikä allekirjoitus kuvaa curry-apuohjelman kaikki argumentit A ja viimeisen argumentin L?
Kertaus
Kertaus: Mallintakaa argumenttiluetteloita [...A, L] -rakenteella, kirjoittakaa pienet curry- ja compose-apuohjelmat ja säilyttäkää tyypit automaattisesti.
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 ”Tuplen rest-alkiot ja curryn tyypit” ilmainen?
Kyllä – oppitunnin ”Tuplen rest-alkiot ja curryn tyypit” 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 ”Tuplen rest-alkiot ja curryn tyypit”?
Käyttäkää tuplen rest-alkioita mielivaltaisten argumenttilistojen tallentamiseen ja rakentakaa pieniä curry-apufunktioita tyyppipäätelmän avulla. 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 1/3.
Kuinka kauan ”Tuplen rest-alkiot ja curryn tyypit”-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
- Tuplen rest-alkiot ja curryn tyypit
- Funktioiden ja argumenttien turvallinen koostaminen
- Vahvasti tyypitetyt rakentajat