Am parcurs un drum lung de învățare a tipului de tipScript de la lansarea acestei serii. Primul tutorial vă oferă o scurtă prezentare a tipului de tipScript și a sugerat câteva IDE-uri pe care le puteți utiliza pentru scrierea tipului de tipScript. Al doilea tutorial sa concentrat asupra tipurilor de date, iar al treilea tutorial a discutat despre elementele de bază ale interfețelor în TypeScript.
După cum probabil știți deja, JavaScript a adăugat recent doar suport nativ pentru cursuri și programare orientată pe obiecte. Cu toate acestea, TypeScript a permis dezvoltatorilor să utilizeze clase în codul lor pentru o lungă perioadă de timp. Acest cod este apoi compilat în JavaScript, care va funcționa în toate browserele importante. În acest tutorial, veți învăța despre clase în TypeScript. Ele sunt similare cu omologii lor ES6, dar sunt mai stricte.
Să începem cu elementele de bază. Clasele sunt o parte fundamentală a programării orientate pe obiecte. Utilizați clasele pentru a reprezenta orice entitate care are anumite proprietăți și funcții care pot acționa asupra proprietăților date. TypeScript vă oferă un control complet asupra proprietăților și funcțiilor care sunt accesibile în interiorul și în afara clasei proprii care conține clasa. Iată un exemplu foarte simplu de a crea un Persoană
clasă.
clasa Persoana name: string; constructor (theName: șir) this.name = theName; introduceSelf () console.log ("Bună, eu sunt" + this.name + "!"); permite persoaneA = o persoană nouă ("Sally"); personA.introduceSelf ();
Codul de mai sus creează o clasă foarte simplă numită Persoană
. Această clasă are o proprietate numită Nume
și o funcție numită introduceSelf
. Clasa are, de asemenea, un constructor, care este, de asemenea, o funcție. Cu toate acestea, constructorii sunt specifici deoarece sunt chemați de fiecare dată când creăm o nouă instanță a clasei noastre.
De asemenea, puteți trece parametrii constructorilor pentru a inițializa diferite proprietăți. În cazul nostru, folosim constructorul pentru a inițializa numele persoanei pe care o creați utilizând Persoană
clasă. introduceSelf
funcția este o metodă a Persoană
și îl folosim aici pentru a imprima numele persoanei în consolă. Toate aceste proprietăți, metode și constructorul unei clase sunt denumite colectiv membrii clasei.
Ar trebui să rețineți că Persoană
clasa nu creează automat o persoană în sine. Acționează mai mult ca un plan cu toate informațiile despre atributele pe care o persoană ar fi trebuit să le creeze odată. Având în vedere acest lucru, am creat o persoană nouă și am numit-o pe Sally. Apelarea metodei introduceSelf
pe această persoană va tipări linia "Bună, sunt Sally!" la consola.
În secțiunea anterioară, am creat o persoană pe nume Sally. În momentul de față, este posibil să schimbăm numele persoanei de la Sally la Mindy oriunde în codul nostru, așa cum se arată în exemplul următor.
clasa Persoana name: string; constructor (theName: șir) this.name = theName; introduceSelf () console.log ("Bună, eu sunt" + this.name + "!"); permite persoaneA = o persoană nouă ("Sally"); // Imprimă "Bună, eu sunt Sally!" personA.introduceSelf (); personA.name = "Mindy"; // Imprimă "Bună, eu sunt Mindy!" personA.introduceSelf ();
S-ar putea să fi observat că am reușit să folosim ambele Nume
proprietate și introduceSelf
în afara clasei care le conține. Acest lucru se datorează faptului că toți membrii unei clase din TypeScript sunt public
în mod implicit. De asemenea, puteți specifica explicit că o proprietate sau o metodă este publică prin adăugarea cuvântului cheie public
înainte de.
Uneori, nu doriți ca o proprietate sau o metodă să fie accesibilă în afara clasei sale care conține. Acest lucru se poate realiza prin faptul că acești membri sunt privați folosind privat
cuvinte cheie. În codul de mai sus, am putea face numele proprietății privat
și împiedicați schimbarea acesteia în afara clasei care conține. După această modificare, TypeScript vă va afișa o eroare care spune că Nume
proprietatea este privat
și îl puteți accesa numai în interiorul Persoană
clasă. Imaginea de mai jos arată eroarea din Visual Studio Code.
Moștenirea vă permite să creați clase mai complexe pornind de la o clasă de bază. De exemplu, putem folosi Persoană
clasa din secțiunea anterioară ca bază pentru a crea o prieten
clasa care va avea toți membrii Persoană
și adăugați unii membri ai săi. În mod similar, puteți adăuga și a Familie
sau Profesor
clasă.
Ei vor moșteni toate metodele și proprietățile Persoană
adăugând în același timp câteva metode și proprietăți proprii pentru a le separa. Exemplul de mai jos ar trebui să devină mai clar. Am adăugat, de asemenea, codul pentru Persoană
clasa aici pentru a putea compara cu ușurință codul atât al clasei de bază, cât și al clasei derivate.
clasa Persoană nume privat: string; constructor (theName: șir) this.name = theName; introduceSelf () console.log ("Bună, eu sunt" + this.name + "!"); prietenul de clasă extinde Persoana yearsKnown: number; constructor (nume: șir, aniCunoscut: număr) super (nume); this.yearsKnown = yearsKnown; TimeKnown () console.log ( "Noi am fost prieteni pentru" + "+ this.yearsKnown ani.") Lasa friendA = nou prieten ( "Jacob", 6); // Prints: Bună, eu sunt Jacob! friendA.introduceSelf (); // Prints: Am fost prieteni de 6 ani. friendA.timeKnown ();
După cum puteți vedea, trebuie să utilizați extinde
cuvânt cheie pentru prieten
clasa de a moșteni toți membrii Persoană
clasă. Este important să ne amintim că constructorul unei clase derivate trebuie să invite întotdeauna constructorul clasei de bază cu un apel către super()
.
S-ar putea să fi observat că constructorul lui prieten
nu trebuie să aibă același număr de parametri ca și clasa de bază. Cu toate acestea, parametrul pentru primul nume a fost transmis super()
pentru a invoca constructorul părintelui, care a acceptat și un parametru. Nu trebuia să redefinăm introduceSelf
funcția în interiorul prieten
pentru că a fost moștenit de la Persoană
clasă.
Până în acest moment, am făcut doar membrii unei clase fie privat
sau public
. În timp ce le face publice ne permite să le accesăm de oriunde, făcându-le membrii privați să le limiteze clasa lor proprie. Uneori este posibil ca membrii unei clase de bază să fie accesibili în toate clasele derivate.
Puteți utiliza funcția protejat
modificator în astfel de cazuri pentru a limita accesul unui membru numai la clasele derivate. De asemenea, puteți utiliza funcția protejat
cuvânt cheie cu constructorul unei clase de bază. Acest lucru va împiedica pe oricine să creeze o instanță a acelei clase. Totuși, veți putea totuși să extindeți clasele bazate pe această clasă de bază.
clasa Persoană nume privat: string; vârstă protejată: număr; constructor protejat (theName: string, theAge: number) this.name = theName; this.age = theAge; introduceSelf () console.log ("Bună, eu sunt" + this.name + "!"); prietenul de clasă extinde Persoana yearsKnown: number; constructor (nume: șir, vârstă: număr, aniCunoscut: număr) super (nume, vârstă); this.yearsKnown = yearsKnown; TimeKnown () console.log ( "Noi am fost prieteni pentru" + "+ this.yearsKnown ani.") FriendSince () lasa firstAge = this.age - this.yearsKnown; console.log ("Am fost prieteni de când am fost $ firstAge ani. friendA = Prieten nou (" William ", 19, 8); // Prints: Am fost prieteni de când aveam 11 ani. friendA.friendSince ();
În codul de mai sus, puteți vedea că am făcut vârstă
proprietate protejat
. Acest lucru împiedică utilizarea vârstă
în afara oricărei clase derivate din Persoană
. Am folosit de asemenea protejat
cuvânt cheie pentru constructorul Persoană
clasă. Declarând constructorul ca protejat
înseamnă că nu vom mai putea să instanțiăm direct Persoană
clasă. Următoarea captura de ecran afișează o eroare care apare în timp ce încercați să instanțiați o clasă cu protejat
constructor.
În acest tutorial, am încercat să acoperim elementele de bază ale claselor în TypeScript. Am început tutorialul creând o bază foarte bună Persoană
clasa care a tipărit numele persoanei în consolă. După aceea, ați aflat despre privat
, care poate fi folosit pentru a împiedica accesul membrilor unei clase la orice punct arbitrar al programului.
În sfârșit, ați învățat cum să extindeți diferite clase în codul dvs. utilizând o clasă de bază cu moștenire. Există mult mai multe informații despre cursuri în documentația oficială.
Dacă aveți întrebări legate de acest tutorial, anunțați-ne în comentarii.