void-tyyppi funktioissa
Selvittäkää, miten void eroaa undefined-tyypistä funktion paluuarvon yhteydessä.
void-tyyppi funktioissa 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.
void-palautustyyppi
void kuvaa funktiota, joka ei palauta hyödyllistä arvoa. Funktio suoritetaan silti loppuun; se ei vain tuota arvoa, jota pitäisi käyttää. Se on sellaisten funktioiden tyyppi, joita kutsutaan sivuvaikutustensa vuoksi.
function log(message: string): void {
console.log(message);
}
log('Hello void');Päätelty void
Jos funktiossa ei ole return-lausetta tai siinä on vain paljas return;, TypeScript päättelee void-tyypin automaattisesti. Sitä tarvitsee harvoin kirjoittaa eksplisiittisesti, vaikka sen kirjoittaminen dokumentoi tarkoituksen.
function greet(name: string) {
console.log('Hi ' + name);
// no return -> inferred void
}
greet('Ada');void ja undefined
Ne liittyvät toisiinsa, mutta eivät ole sama asia. void-tyyppinen funktio saattaa palauttaa ajonaikaisesti undefined-arvon tai olla palauttamatta sitä, eikä sen palautusarvoon pidä luottaa. Funktion, jonka palautustyypiksi on määritetty undefined, on palautettava se eksplisiittisesti.
function a(): void { /* returns nothing useful */ }
function b(): undefined { return undefined; }
console.log(a(), b());void-tulosta ei pidä käyttää
void-kutsun ajonaikainen arvo on undefined, mutta tyyppijärjestelmä ei kannusta käyttämään sitä. Käsitelkää void-tyyppi merkityksessä ’ohittakaa tämä palautusarvo’.
function save(): void {
console.log('saved');
}
const result = save(); // result has type void
console.log(result); // undefined at runtimevoid callback-tyypeissä
Hienovarainen mutta tehokas sääntö: callback, jonka palautustyypiksi on määritetty void, voi saada toteutuksekseen funktion, joka palauttaa minkä tahansa arvon. Ylimääräinen palautusarvo yksinkertaisesti ohitetaan.
type Handler = () => void;
const h: Handler = () => 42; // returns number, still fine
h();
console.log('Returned value is ignored by callers');Miksi tämä sääntö on olemassa
Tämän joustavuuden ansiosta voit välittää arr.push-funktion kaltaisia funktioita void-callbackeiksi, vaikka ne palauttavat numeron. Kutsuja lupasi olla käyttämättä palautusarvoa, joten mikä tahansa palautusarvo on harmiton.
const items: number[] = [];
const nums = [1, 2, 3];
nums.forEach((n) => items.push(n)); // push returns number, ok
console.log(items);Kontekstuaalinen void taulukkometodeissa
forEach odottaa callbackia, joka palauttaa void-tyypin. Siksi voit kirjoittaa yksirivisen nuolifunktion, joka palauttaa sivutuotteena arvon ilman virhettä – kontekstuaalinen void-tyyppi ottaa sen vastaan.
const result: string[] = [];
['a', 'b'].forEach((x) => result.push(x.toUpperCase()));
console.log(result);Yleinen sekaannus
void-callback-sääntö koskee callbackin tyyppiä, ei funktioita, joiden oma merkitty palautustyyppi on void. Funktio, joka on ilmoitettu muodossa (): void, ei edelleenkään voi sisältää return value;-lausetta, jossa palautetaan muu kuin undefined-arvo.
function f(): void {
return; // ok
// return 5; // Error: 5 not assignable to void
}
f();
console.log('declared void cannot return a value');void-parametrit ovat epätavallisia
Vaikka void esiintyy parametrin tyyppinä harvoin, sitä voidaan käyttää kehittyneissä geneerisissä tyypeissä. Tavallisessa koodissa se esiintyy lähes aina palautustyyppinä, joka ilmaisee, ettei merkityksellistä tulosta ole.
type Listener = (event: string) => void;
const onClick: Listener = (e) => console.log('Event:', e);
onClick('click');void ja Promiset
Asynkroniset funktiot palauttavat usein tyypin Promise<void>, kun ne suorittavat työn mutta valmistuvat ilman palautusarvoa. Tämä vastaa synkronisen koodin void-mallia asynkronisessa koodissa.
async function sync(): Promise<void> {
console.log('syncing...');
// resolves with no value
}
sync().then(() => console.log('done'));Käytä void-tyyppiä harkiten
Määritä palautustyypiksi void, kun haluat ilmaista, että funktio on olemassa sivuvaikutustensa vuoksi eivätkä kutsujat saa riippua palautusarvosta. Tämä selkeyttää tarkoitusta ja antaa joustavan callback-säännön toimia hyväksesi.
function notify(msg: string): void {
console.log('NOTIFY:', msg);
}
const handlers: Array<(m: string) => void> = [notify];
handlers.forEach((fn) => fn('ping'));Pikatesti
Testatkaa, miten hyvin ymmärrätte void-tyypin.
Kertaus: void
Opitte, että void:
- merkitsee funktioita, jotka palauttavat ei hyödyllistä arvoa.
- eroaa
undefined-tyypistä: void-tuloksia ei pidä käyttää. - hyväksyy callback-tyyppinä funktioita, jotka palauttavat minkä tahansa arvon, koska kutsujat ohittavat palautusarvon.
- mahdollistaa metodien, kuten
push-metodin, siistin käytönforEach-kutsussa.
Seuraavaksi kokoamme kaiken yhteen ja käsittelemme unknown-tyyppiä turvallisesti.
const tasks: Array<() => void> = [
() => console.log('task 1'),
() => console.log('task 2')
];
tasks.forEach((t) => t());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 ”void-tyyppi funktioissa” ilmainen?
Kyllä – oppitunnin ”void-tyyppi funktioissa” 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 ”void-tyyppi funktioissa”?
Selvittäkää, miten void eroaa undefined-tyypistä funktion paluuarvon yhteydessä. 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 ”void-tyyppi funktioissa”-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
- unknown- ja any-tyyppien ymmärtäminen
- never-tyyppi ja mahdottomat tilat
- void-tyyppi funktioissa
- unknown-tyypin tyyppiturvallinen käsittely