TypeScript Academy · Oppitunti

Geneeriset interface-määrittelyt ja tyyppialiakset

Soveltakaa geneerisyyttä interface-määrittelyihin ja omiin tyyppeihin

Oppitunti 2/413 vaihetta

Geneeriset interface-määrittelyt ja tyyppialiakset on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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

Geneeriset tyypit eivät rajoitu funktioihin. Myös interfacet ja tyyppialiakset hyväksyvät tyyppiparametreja, joten niitä voidaan käyttää uudelleen monien tyyppien kanssa.

Geneerisen interfacen syntaksi

Lisää `` interfacen nimen perään, jotta siitä tulee geneerinen. Käytä T:tä ominaisuuksien tyypeissä ja metodien allekirjoituksissa.
interface Box<T> {
  value: T;
  unwrap(): T;
}
const box: Box<number> = { value: 42, unwrap() { return this.value; } };

Geneerinen tyyppialias

Tyyppialiakset käyttävät samaa ``-syntaksia.
type Maybe<T> = T | null | undefined;
type Pair<A, B> = { first: A; second: B };
const p: Pair<string, number> = { first: 'Alice', second: 30 };

Geneerinen Repository-interface

Klassinen käyttötapaus on geneerinen repository-interface, joka toimii minkä tahansa entiteettityypin kanssa.
interface Repository<T> {
  findById(id: number): T | null;
  findAll(): T[];
  save(item: T): void;
  delete(id: number): void;
}

Geneerisen interfacen toteuttaminen

Anna tyyppiargumentti, kun toteutat geneerisen interfacen.
class UserRepo implements Repository<User> {
  findById(id: number): User | null { return null; }
  findAll(): User[] { return []; }
  save(user: User): void {}
  delete(id: number): void {}
}

Geneeristen interfacien laajentaminen

Geneeriset interfacet voivat laajentaa muita geneerisiä interfaceja.
interface Named<T> { name: T; }
interface NamedAndAged<T> extends Named<T> { age: number; }

Geneerinen vastaustyyppi

Geneerinen API-vastaustyyppi, joka ympäröi mitä tahansa tietosisältöä.
type ApiResponse<T> = {
  status: 'success' | 'error';
  data: T;
  timestamp: number;
};
const res: ApiResponse<User[]> = { status: 'success', data: [], timestamp: Date.now() };

Useita tyyppiparametreja interfaceissa

Interfaceissa voi olla useita tyyppiparametreja.
interface KeyValue<K, V> {
  key: K;
  value: V;
}
const kv: KeyValue<string, number> = { key: 'age', value: 30 };

Geneerinen metodi ei-geneerisessä interfacessa

Interfacessa voi olla geneerisiä metodeja, vaikka koko interface ei olisi geneerinen.
interface Transformer {
  transform<T, U>(input: T, fn: (val: T) => U): U;
}

Rekursiiviset geneeriset tyypit

Geneeriset tyypit voivat viitata itseensä puu- tai linkitetyn listan rakenteissa.
interface TreeNode<T> {
  value: T;
  children: TreeNode<T>[];
}

Tyyppialias vai interface geneerisille tyypeille

Molemmat tukevat geneerisiä tyyppejä yhtä hyvin. Suosi interfacea luokilla toteutettavissa sopimuksissa. Suosi type-määrittelyä unionityyppeihin liittyvissä geneerisissä tyypeissä, kuten Maybe.

Pikatarkistus

Mitä annat toteuttaessasi `interface Repository` -interfacen?

Kertaus

Geneeriset interfacet ja tyyppialiakset käyttävät :tä toimiakseen minkä tahansa tyypin kanssa. Niiden avulla voit luoda uudelleenkäytettäviä sopimuksia repositoryille, vastausympäröijille ja rekursiivisille tietorakenteille. Toteuta ne antamalla konkreettinen tyyppiargumentti.
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 ”Geneeriset interface-määrittelyt ja tyyppialiakset” ilmainen?

Kyllä – oppitunnin ”Geneeriset interface-määrittelyt ja tyyppialiakset” 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 ”Geneeriset interface-määrittelyt ja tyyppialiakset”?

Soveltakaa geneerisyyttä interface-määrittelyihin ja omiin tyyppeihin 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 2/4.

Kuinka kauan ”Geneeriset interface-määrittelyt ja tyyppialiakset”-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. Geneeriset funktiot: tyyppiparametrit
  2. Geneeriset interface-määrittelyt ja tyyppialiakset
  3. Geneeristen tyyppien rajoitteet extends-avainsanalla
  4. Oletustyyppiparametrit
← Takaisin: TypeScript Academy