12-4 Retour de type Promise
Nous ne nous sommes pas trop souciés du type de retour de la fonction obtenirProjets()
. Par contre, il est intéressant de regarder le type de retour automatiquement assigné par TypeScript.
Le type de retour inféré est Promise<any>
.
Une fonction asynchrone (async) retourne toujours une promesse (Promise
). Cette Promise
peut être associée à un type d'objet retourné.
Une promesse est un objet (Promise) qui représente la complétion ou l'échec d'une opération asynchrone
L'opérateur await, pour sa part, permet d'attendre la résolution d'une promesse (Promise
). Il ne peut être utilisé qu'au sein d'une fonction asynchrone (définie avec l'instruction async
).
Modifier le type de retour pour Promise<Projet[]>
La fonction obtenirProjets
retourne un tableau de Projet
(Projet[]
). Comme il s'agit d'une fonction asynchrone, ce retour final est emballé dans une Promise
.
Ainsi, plutôt que d'être une Promise
très générique comme Promise<any>
, on privilégiera de retourner Promise<Projet[]>
.
La portion entre < >
représente le type d'objet final reçu lorsque la Promise aura été résolue. Ici Projet[]
.
On peut, de cette façon, modifier la fonction pour retourner le bon type.
async obtenirProjets(): Promise<Projet[]>{
let url = "/projets";
let reponse = await api.get(url);
return reponse.data;
}
Typer de retour de l'appel d'API
On peut en plus typer le retour de l'appel d'API!
async obtenirProjets(): Promise<Projet[]>{
let url = "/projets";
let reponse = await api.get<Projet[]>(url);
return reponse.data;
}
api.get<Projet[]>(url);
vient dire à axios
que le retour de données (propriété data
) sera au type Projet[]
.
La preuve, regardez le type de reponse.data
: