Le Classi in TypeScript

In questo video vedremo come TypeScript permette di lavorare con le classi.
Le classi sono state introdotte con l'ECMAScript 6 e TypeScript permette di applicare e rinforzare i paradigmi della programmazione ad oggetti come: polimorfismo e incapsulamento. Infatti, TypeScript introduce nuove keyword specifiche per le classi: public, protected, private e readonly.
public può essere assegnato a proprietà e metodi, e permette il loro uso nella classe e al di fuori della classe.
protected può essere assegnato a proprietà e metodi, e permette il loro uso solo all'interno della classe o alle classi che estendono la classe padre.
private può essere assegnato a proprietà e metodi, e permette il loro uso solo all'interno della classe.
readonly converte una normale proprietà in una costante.

Trascrizione: (click per espandere)
salve a tutti in questo video vedremo
come typescript lavora con le classi
se vi ricordate il concetto di classe è
stato introdotto con l'ecmascript 6 e
typescript riesce aggiungere
delle funzionalità per potenziare
i paradigmi della programmazione
ad oggetti come incapsulamento e
polimorfismo rendendo le classi di
javascript più simili a classi di altri
linguaggi di programmazione per esempio le classi in java eccetera
resta sempre il concetto di fondo che
una classe di javascript
usando i prototipi non potrà
mai essere come una classe di java
andiamo a vedere un esempio allora io
dichiaro una classe la chiamo persona e
adesso invece di andare subito a
scrivere il constructor in typescript
bisogna dichiarare tutte le proprietà
che verranno usate dalla classe prima di
scrivere il constructor quindi per
esempio io voglio avere una proprietà
che si chiama età e questa età
questa proprietà deve essere accessibile
al di fuori della classe
allora io devo usare perché sia
accessibile al di fuori della classe devo
usare la keyword public poi metto il
nome della della mia proprietà
posso darle il tipo che sarà un number
esempio è quindi qui ho inizializzato la
proprietà età che sarà accessibile al di
fuori della mia classe e dovrà contenere
un numero
poi vado a creare il costruttore e
voglio che l'età venga passata come
parametro quando inizializzo la classe e
quindi metto età parametro che sarà un
numero e poi dentro al costruttore vado
ad assegnare l'età passata come
parametro alla proprietà della classe
quindi metto this età uguale età
parametro
e poi non so posso andare a stamparlo
sulla console
ecco qui questa è una classe molto
semplice
adesso vediamo come si può inizializzare
questa classe allora io per esempio
mette una costante la chiamo persona che tipo avrà la mia classe persona e
poi vado a inizializzare la classe è
come parametro posso passarci 30 allora
come adesso e se io vado a eseguire
questo codice mi verrà stampato sulla
console l'età quando io inizializzo
la classe e come vi dicevo avendo
dichiarato l'età pubblica io possa
accedere a questa proprietà al di fuori
della classe quindi io posso
fare un'altra console log qui per esempio
persona punto età e quindi io posso
accedere alla proprietà dal di fuori
della classe in questa maniera se avessi
dichiarato questa proprietà qui privata
e quindi vuol dire non accessibile al di
fuori della classe come vedete typescript
mi da errore mi dice guarda che la
proprietà età è privata non puoi
accedere al di fuori della classe
se l'avessi dichiarata protetta ancora
non non avrei potuto accedere a questa
proprietà dal di fuori della classe per
il momento non parliamo di protetta ve
lo faccio vedere un po' più tardi per il
momento parliamo solo di privata o
pubblica quindi privata vuol dire che la
proprietà può essere usata all'interno
della classe può essere usata in altri
metodi della classe ma non può
essere accessibile dal di fuori della
classe
stessa cosa vale per i metodi della
classe possono essere pubblici protetti
o privati adesso io per esempio vado a
creare un metodo pubblico e faccio
saluta e anche qui vado a stampare
qualcosa per esempio metto salve io sono mario this eta
ecco qui come vedete io avendo
dichiarato la proprietà età privata
posso usarla all'interno della mia
classe ma come dicevo prima non posso
accedere a questa proprietà
dall'esterno però posso accedere al
metodo saluta perché io l'ho dichiarato
pubblico quindi posso fare persona
saluta e come vedete non ho nessun
errore evidenziato da typescript perché io
possa accedere al metodo saluta se lo
avessi dichiarato privato allora typescript
darebbe errore perché appunto sarebbe
privato e quindi potrebbe essere
usato all'interno della classe e magari
in questa maniera qui
come vedete avrei potuto fare questo
quindi usarlo all'interno della classe
ma non avrei potuto usarlo al di fuori
della classe il metodo potrebbe essere
anche protetto ma lo vedremo fra qualche
minuto la keyword a readonly viene usata
quando io ho una proprietà a cui non
voglio andare a cambiare il valore
quindi io dichiaro che questa proprietà ha
questo valore e non avrà più bisogno di
cambiarne il valore quindi sarebbe come
una costante quando io ho a che fare con
una proprietà che poi alla fine e' una
costante posso usare la
keyword readonly quindi per esempio io
posso dichiarare una proprietà
privata readonly la chiamo un nome che
sarà una stringa e a cui associo
direttamente un nome che è quello che ho
usato prima mario e qui dentro qui posso
andare a sostituire questo con this nome
ecco qui e le proprietà readonly possono
essere private pubbliche o protette
quindi se sono pubbliche posso
accedere dal di fuori della classe se
sono private posso usarle solo
all'interno della mia classe in questa
maniera qui se adesso io provo andare a
cambiare il valore di questa proprietà
per esempio metto davide come vedete
typescript dice non puoi perché questa proprietaria stata dichiarata readonly
quindi non puoi cambiare il valore
quindi abbiamo visto cosa vuol dire
privato abbiamo visto cosa vuol dire
pubblico abbiamo visto cosa vuol dire
readonly e adesso parliamo di
protected
quando io ho una proprietà che
protected o un metodo che è protected
posso usarlo all'interno della classe
posso usarlo all'interno di una classe
che estende questa classe ma non posso
usarlo al di fuori delle classi andiamo
a vedere un altro esempio quindi io faccio classe lo chiamo
genitore che estende la classe persona e
vado usare constructor posso passarci
l'età parametro anche qui che sarà
un numero e poi si deve usare super
questo qui non cambia niente dal normale
javascript per le classi e adesso io per
esempio voglio andare a usare anzi vado a
modificare questa proprietà readonly in
protected quindi come vedete posso
usarla all'interno della classe
qui perché
non c'è il problema posso andarla ad
usare all'interno della classe che
estende la classe genitore quindi per
esempio io posso fare console log this
nome e come vedete non si lamenta però
nel caso io vado a provare ad usarla al
di fuori della mia classe come vedete mi
dice no non puoi usarla perché questa
qua una classe protetta
se vado a inizializzare anche la classe
figlio la classe genitore la chiamò
genitore è questo qui sarà genitore
ecco qui se adesso io provo andare ad
accedere a quella classe genitore nome
come vedete mi dice no non puoi accedere perché è protetta
quindi ricapitolando le proprietà o i
metodi dichiarati privati solo
all'interno della classe dove sono
dichiarati le proprietà e metodi
dichiarati protetti possono essere usati
all'interno della classe dove sono
dichiarati anche dalle classi che
estendono la classe dove
erano stati dichiarati come in questo
caso qui ma non possono essere usati al
di fuori e le proprietà e metodi
dichiarati pubblici possono essere
accessibili al dal di fuori delle classi
e infine la keyword a readonly che
trasforma una proprietà praticamente in
una costante con questo è tutto
ci sentiamo alla prossima ciao
File del video: