Bonjour,
Le titre de ce ticket n'est pas très évocateur, désolé.
Je viens de commencer à travailler avec typescript et déjà, première galère dont je ne trouve pas de réponse.
Alors voilà: Dans un contexte de requêtes/réponses en AJAX, le script client reçoit des données sous la forme d'un objet JSON. Cet objet contient 3 clés associées à trois valeurs:
Et bien sûr, comme vous pouvez vous en douter, le "any[]" pose problème. pour la clé datas, j'attends toujours un tableau. Ce tableau varie en fonction de la réponse du serveur MAIS ces différents tableaux possèdent une structure assez stable et on peut prévoir à l'avance ces différentes structures. Par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 type ajaxResponse = { call : string, status : string, datas : any[] }
- Une réponse "Message" du serveur envoie pour "datas" un tableau fixe: ["message" => 'mon message'] que j'ai traduit en { message: string }
- Une réponse "Redirect" pour rediriger vers une autre page, tableau ['location' => '/otherpage'], structure traduite en ts qui donne { location : string]
- Une réponse "Errors" qui renvoie les erreurs de saisie d'un formulaire, avec pour datas [ 'errors' => [ 'key1'=> 'val1', 'key2' => 'val2', ...] ]
Quand le client reçoit la réponse, il donne directement ce tableau datas à un objet dépendant de la valeur de "call". Chacun de ces objets hérite d'une classe abstraite qui prend en paramètre ce fameux tableau "datas". Chaque héritier de cette classe attend le format de tableau qui lui est propre. L'un veut le tableau "message", l'autre veut "location" et le troisième veut ses erreurs à afficher.
Eh bien j'ai beaucoup de mal à trouver comment remplacer "any[]" (le gros vilain pas beau et incompatible) avec des valeurs admissibles.
Pensez bien qu'avant de venir poster une telle question, j'ai cherché... Je rappelle que je suis un novice en typescript, ça fait trois jours que je m'y suis mis.
J'hésite même à laisser tomber typescript pour reprendre mes bonnes vieilles habitudes. Ce serait dommage après tant d'efforts à typer mes codes de manière fiable coté PHP...
J'ai essayé différentes combinaisons en Union Type mais force est de constater que j'ai encore beaucoup de lacunes. En tout cas, aucune n'est satisfaisante et je patine.
Merci pour toute réponse apportée.
Partager