6 Interfaccie
spostiamo il servizio creato precedentemente in una nuova cartella services che andiamo a creare e controlliamo che le dipendenze vengano aggiornate e soddisfatte.
Analizzando il service, esso contiene l’array user che è composto da oggetti di un certo tipo chiave valore
users = [
{
nome: 'fag',
cognome: 'pingwie',
cf: 'fgapng44a21f221c',
mail: 'pippo@tin.it',
tel: '123456',
prov: 'SV',
eta: 55
},
{
nome: 'fag2',
cognome: 'pingwie2',
cf: 'fgapng44a21f221c',
mail: 'pippo@tin.it',
tel: '123456',
prov: 'SV',
eta: 55
},
{
nome: 'fag3',
cognome: 'pingwie3',
cf: 'fgapng44a21f221c',
mail: 'pippo@tin.it',
tel: '123456',
prov: 'SV',
eta: 55
}
];
Quindi come si vede ogni oggetto dell’array ha un tipo di dati, per esempio il nome è una string, l’età è un number,
Per tipizzare i tipi di dato, per avere un eventuale auto completamento sui records e per risolvere eventuali errori con campi indesiderati, è possibile creare un’ interface.
Creiamo una nuova cartella interfaces e creiamo la nuova interfaccia chiamata user con l’ide o con angular cli
ng generate interface user
adesso dobbiamo inserire i campi presenti nel nostro servizio, ecco come si presenta l’interfaccia user
export interface User {
nome;
cognome;
cf;
mail;
tel;
prov;
eta;
}
Ora dobbiamo dire al servizio che l’array users è di tipo User interface racchiudendo il nome dell’interfaccia tra maggiore e minore ( < > )
users: Array<User> = [
L’ ide automaticamente importa l’interfaccia
import {User} from '../interfaces/user';
qualora nell’ array si aggiungesse una voce non presente nell’interfaccia, o si sbagliasse a scriverne una, avremmo un’errore.
Un altra forma per dire che users è un array di tipo User è mettendo il nome dell’interfaccia seguita da parentesi quadre: User[]
users: User[] = [
Nel decoratore @input di user.component.ts dobbiamo ora specificare che user è di tipo User e importare l’interface
@Input('user-data') user: User;
se ora nel metodo deleUser() inserisco
this.user.
l’auto completamento dell’ide ci fa scegliere i vari campi (nome, cognome,cf…) e altre utili funzioni correlate.
Questa parte riguarda il singolo utente, ma se andiamo a lavorare sugli utenti nel file users.components.ts, dichiarando intanto l’array users di tipo User
users: User = [];
e se aggiungiamo this.users. noteremo che avremo accesso a tutti i metodi riguardanti gli array oltre che i dati dell’interface.
Ancora più efficace è tipizzare l’interfaccia, specificando per ogni proprietà il tipo di dato associato, questo ci permetterà di prevenire eventuali errori nella digitazione di dati sbagliati
export interface User {
nome: string;
cognome: string;
cf: string;
mail: string;
tel: string;
prov: string;
eta: number;
}