|
Auteur | Sujet : [blabla@hosto] Le topic des vieux |
---|
hephaestos Sanctis Recorda, Sanctis deus. | Reprise du message précédent :
Message cité 1 fois Message édité par hephaestos le 20-06-2021 à 21:51:18 |
Publicité | Posté le 20-06-2021 à 20:12:19 |
Kenshineuh |
|
masklinn í dag viðrar vel til loftárása |
--------------- Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody |
ratibus |
--------------- Mon blog |
Kenshineuh |
Ma fonction d'exemple regarde juste si il existe la relation, sinon c'est que c'est un vieux document, donc on recup les infos via les anciens attributs. Du coup, c'est pas le code le problème, c'est juste la compilation si je type le document. Le code fonctionne très bien sans le typage.
Parce que en fait mon type de document c'est l'entité en BDD et que la méthode getclient que j'ai donné en exemple n'existe pas. En vrai c'est une fonction qui me retourne un objet spécifique pour formatter un PDF via pdfmake. Message cité 1 fois Message édité par Kenshineuh le 20-06-2021 à 21:12:07 |
el muchacho Comfortably Numb |
--------------- Les aéroports où il fait bon attendre, voila un topic qu'il est bien |
flo850 moi je |
je reviens juste de dépouillement
Message cité 1 fois Message édité par flo850 le 20-06-2021 à 22:01:44 --------------- |
hephaestos Sanctis Recorda, Sanctis deus. |
Si tu sais des trucs que tu dis pas au compilo, tu n'as pas d'autre choix que de lui dire d'aller se faire foutre avec un cast. Message cité 1 fois Message édité par hephaestos le 20-06-2021 à 21:56:58 |
flo850 moi je | il vérifie que contact n'est pas falsy, donc avec le duck typing, ça passe --------------- |
Kenshineuh |
Oui du coup il n'y a pas mieux que de faire du "as". Je cherchais un peu un truc magique plus haut dans la définition du type ou via autre chose. Merci en tout cas.
Parce que j'ai plusieurs tests avant, à la création d'un doc, il y a forcément une relation qui est créé via Contact. Mon exemple de code là c'était pour expliquer simplement le problème mais ça ne reflète pas vraiment la réalité, c'était juste pour catch des vieux documents qui ont forcément un attribut clientFirstname. Message édité par Kenshineuh le 20-06-2021 à 22:03:23 |
Publicité | Posté le 20-06-2021 à 22:00:55 |
hephaestos Sanctis Recorda, Sanctis deus. | À ce compte là, plutôt qu'un cast perso je ferai document.foo ?? '' C'est tout aussi dégueulasse mais ça évite les effets de bords du cast. (ça demande de rajouter foo explicitement sur les types de documents, en tant que propriété optionnelle) Message cité 1 fois Message édité par hephaestos le 20-06-2021 à 22:07:20 |
Kenshineuh |
Vu que les types sont des entités de bdd, ça va me créer des attributs inutiles en BDD. Ou alors je rajoute un typage perso qui étend le type de base mais bon. Message édité par Kenshineuh le 20-06-2021 à 22:10:59 |
Mackila |
Harkonnen ModérateurUn modo pour les bannir tous |
je suis pas un expert Typescript, mais en C# (qui est proche de TS), je ferais un truc du genre :
edit: je sais que j'aurais pu utiliser un opérateur ternaire, mais je déteste ça ! j'ai toujours trouvé que ça rendait le code moins facilement lisible Message cité 2 fois Message édité par Harkonnen le 21-06-2021 à 09:34:25 --------------- J'ai un string dans l'array (Paris Hilton) |
___alt | Alors que mettre plein de return c'est plus lisible --------------- TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW |
skeye |
--------------- Can't buy what I want because it's free - |
Kenshineuh |
Comme dit plus haut, c'est pas le code le problème (ça compile très bien et ça fonctionne) mais le fait que Typescript dise qu'il connait pas cette propriété dans un des Type. Du coup je peux ajouter 12000 if/else, ça change rien. Message cité 1 fois Message édité par Kenshineuh le 21-06-2021 à 10:40:58 |
Harkonnen ModérateurUn modo pour les bannir tous |
--------------- J'ai un string dans l'array (Paris Hilton) |
koskoz They see me trollin they hatin |
--------------- |
Harkonnen ModérateurUn modo pour les bannir tous |
--------------- J'ai un string dans l'array (Paris Hilton) |
___alt |
--------------- TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW |
hephaestos Sanctis Recorda, Sanctis deus. |
Message cité 1 fois Message édité par hephaestos le 21-06-2021 à 11:20:31 |
Kenshineuh |
Certes, mais mes Types sont bon. Enfin c'est là tout le sujet de ma question : si j'ai une fonction qui prend plusieurs types de documents (donc qui ont des structures un peu différente), comment tu gères ce cas. Pour le moment je vois 4 choix : 1. Avec un cast :
2. Avec un type custom :
3. Avec un check de type :
4. Différent du 3 mais qui marche :
Edit, ajout du 4. Message cité 2 fois Message édité par Kenshineuh le 21-06-2021 à 11:55:15 |
nraynaud lol | yeah, nouveau traitement médical, 4 ème en un an \o/ --------------- trainoo.com, c'est fini |
Blackyell $question = $to_be || !$to_be; |
|
hephaestos Sanctis Recorda, Sanctis deus. |
Ça me semble correct. Effectivement c'est chiant d'écrire des type guards sur des objets dont on veut vérifier si ils ont une propriété. C'est pour ça qu'avoir des interfaces faciles à discriminer c'est chouette (avec un enum "Type", ou toutes les propriétés présentes mais de type undefined pour les interfaces qui ne l'ont pas), mais bon puisque tu ne contrôles pas tes interfaces, les deux choix me semblent acceptables, je suis d'accord avec toi que 2 c'est naze. Message édité par hephaestos le 21-06-2021 à 12:25:47 |
hephaestos Sanctis Recorda, Sanctis deus. |
Kenshineuh |
Pourquoi ? Du coup comment tu gères une route avec Express qui a mass attributs dans le body ou dans la query (genre un formulaire) ?
C'est la manière la plus simple que j'ai trouvé dans ce cas. Message cité 1 fois Message édité par Kenshineuh le 21-06-2021 à 12:35:27 |
masklinn í dag viðrar vel til loftárása |
--------------- Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody |
Kenshineuh |
Du coup j'ai tout en type any. Mon cast me permet d'avoir de vrais type du coup. Message édité par Kenshineuh le 21-06-2021 à 12:39:48 |
hephaestos Sanctis Recorda, Sanctis deus. | Je retire ce que j'ai dit, quand on n'a pas le choix on n'a pas le choix. Quand on interprète des données brutes, il faut bien les caster en entrée, c'est le meilleur endroit pour le faire (le plus tôt possible). Après note bien que c'est pas parce que c'est pas approprié que je pense qu'il ne faut pas le faire. Dans ton cas, je pense que c'est défendable vue la verbosité de l'alternative sûre. Après pour les détails, j'ai jamais pratiqué Express. Message cité 1 fois Message édité par hephaestos le 21-06-2021 à 12:44:59 |
Kenshineuh | ok merci. |
masklinn í dag viðrar vel til loftárása |
Message cité 1 fois Message édité par masklinn le 21-06-2021 à 12:55:53 --------------- Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody |
Jubijub Parce que je le VD bien |
--------------- Jubi Photos : Flickr - 500px |
hephaestos Sanctis Recorda, Sanctis deus. |
|
Plam Bear Metal |
Message cité 1 fois Message édité par Plam le 21-06-2021 à 13:50:12 --------------- Spécialiste du bear metal |
sligor |
|
___alt |
--------------- TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW |
Plam Bear Metal |
C'est exactement la réponse de ma meuf (le lien vers la pétition) quand j'ai envoyé le bout de texte cité de Jubi Message édité par Plam le 21-06-2021 à 14:10:14 --------------- Spécialiste du bear metal |
Publicité | Posté le |
Sujets relatifs | |
---|---|
Plus de sujets relatifs à : [blabla@hosto] Le topic des vieux |