TypeScript pentru începători, Partea 4 Clase

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.

Crearea primei tale clase

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.

Modificatori publici și privați

Î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ștenire în TypeScript

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ă.

Utilizarea Modificatorului Protejat

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.

Gândurile finale

Î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.

Cod