TypeScript Academy · Oppitunti

Interface vai type: milloin kumpaakin käytetään

Valitkaa interface ja type eri käyttötarkoituksiin

Oppitunti 4/413 vaihetta

Interface vai type: milloin kumpaakin käytetään on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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.

Tervetuloa

Sekä `interface` että `type` kuvaavat olioiden rakenteita. Ne ovat samankaltaisia, mutta niillä on merkittäviä eroja. Tässä oppitunnissa opitte valitsemaan oikean vaihtoehdon.

Yhtäläisyydet

Molemmilla voidaan kuvata olioiden rakenteita, määrittää valinnaisia ja vain luku -ominaisuuksia, käyttää niitä funktion parametrien tyyppeinä ja hyödyntää geneerisyyttä.
interface A { x: number; }
type B = { x: number; };
// Both describe the same shape

Keskeinen ero: määritysten yhdistäminen

Rajapinnat tukevat määritysten yhdistämistä. Tyyppialiasit eivät tue sitä – tyyppialiasin määritteleminen uudelleen aiheuttaa virheen.
interface Config { host: string; }
interface Config { port: number; } // OK — merged

type Settings = { host: string; };
// type Settings = { port: number; }; // Error

Keskeinen ero: unioni- ja leikkaustyypit

Tyyppialiasilla voidaan kuvata unionityyppejä, leikkaustyyppejä, primitiivityyppejä ja monikoita. Rajapinnoilla voidaan kuvata vain olioiden rakenteita.
type ID = string | number;        // union — only with type
type Nullable<T> = T | null;       // union — only with type
type Point = [number, number];     // tuple — only with type

Keskeinen ero: laskennalliset ominaisuudet

Tyyppialiasit voivat käyttää mapped- ja ehdollisia tyyppejä rakenteensa laskemiseen. Rajapinnat eivät voi käyttää näitä suoraan.
type ReadonlyUser = Readonly<{ name: string; age: number }>; // mapped type
type Keys = keyof User; // only with type

interfacen käyttäminen luokan sopimuksena

Rajapinnat toimivat luontevasti luokkien kanssa `implements`-avainsanan avulla. Näin varmistetaan, että luokka tarjoaa tietyt ominaisuudet ja metodit.
interface Repository<T> {
  findById(id: number): T | null;
  save(item: T): void;
}
class UserRepo implements Repository<User> { /* ... */ }

Suorituskyky: rajapinnat ja tyypit

TypeScript tallentaa rajapintojen rakennetarkistusten tuloksia sisäisesti tehokkaammin kuin monimutkaisten tyyppialiaslausekkeiden tuloksia. Suurissa oliotyypeissä suosikaa rajapintaa.

Virheilmoitukset eroavat toisistaan

Kun tyypit eivät täsmää, rajapintojen virheilmoituksissa näytetään usein rajapinnan nimi, kun taas tyyppialiasien yhteydessä näytetään rakenteen laajennettu muoto. Rajapintojen virheilmoitukset ovat yleensä helpommin luettavia.

TypeScriptin virallinen suositus

TypeScript-tiimi suosittelee `interface`-rakenteen käyttämistä, kunnes tarvitsette ominaisuuksia, jotka edellyttävät `type`-rakennetta. Tämä on heidän dokumentoitu suosituksensa.

Tiimin yhdenmukaisuus on tärkeintä

Monet tiimit valitsevat yhden vaihtoehdon ja käyttävät sitä kaikkialla yhdenmukaisuuden vuoksi. Molempien vapaa sekoittaminen samassa projektissa voi aiheuttaa epäselvyyttä. Tyyliohje auttaa tässä.

Yhteenveto päätöksenteosta

Käyttäkää interface-rakennetta olioille, luokille ja kirjastojen laajentamiseen. Käyttäkää type-rakennetta unionityypeille, leikkaustyypeille, monikoille, primitiivityypeille, mapped-tyypeille ja ehdollisille tyypeille.
// interface
interface User { name: string; age: number; }

// type (union)
type ID = string | number;

// type (tuple)
type Coord = [number, number];

Pikatarkistus

Mitä rakennetta tarvitaan unionityypin, kuten `string | number`, luomiseen?

Kertaus

Käyttäkää interface-rakennetta olioiden rakenteille, luokkien sopimuksille ja kirjastojen laajentamiseen. Käyttäkää type-rakennetta unionityypeille, leikkaustyypeille, monikoille ja laskennallisille tyypeille. Jos olette epävarma, TypeScript-tiimi suosittelee interface-rakennetta olioiden rakenteille.
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 ”Interface vai type: milloin kumpaakin käytetään” ilmainen?

Kyllä – oppitunnin ”Interface vai type: milloin kumpaakin käytetään” 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 ”Interface vai type: milloin kumpaakin käytetään”?

Valitkaa interface ja type eri käyttötarkoituksiin 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 4/4.

Kuinka kauan ”Interface vai type: milloin kumpaakin käytetään”-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. Olioiden rakenteen määrittäminen interface-määrittelyillä
  2. Tyyppialiakset monimutkaisille tyypeille
  3. Interface-määrittelyjen laajentaminen ja yhdistäminen
  4. Interface vai type: milloin kumpaakin käytetään
← Takaisin: TypeScript Academy