Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1516 connectés 

 


Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  24096  24097  24098  ..  24176  24177  24178  24179  24180  24181
Auteur Sujet :

[blabla@prog] Le chat interne de plamcorp

n°2388717
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 20-06-2021 à 20:12:19  profilanswer
 

Reprise du message précédent :

Kenshineuh a écrit :

Dites les experts typescript, comment vous gérez le cas suivant :

 

J'ai des documents de ce type :

 
Code :
  1. export type Document = Order | Estimate | Invoice;
 

Et j'ai une fonction du style :

 
Code :
  1. const getClient = (document: Document) => {
  2.  
  3. if (document.contact) {
  4. return document.contact.firstname
  5. }
  6.  
  7. return document.clientFirstname // Property 'clientFirstname ' does not exist on type Estimate
  8.  
  9. }
 

clientFirstname est une vieille propriété qui est encore sur de vieux Order mais qui n'existe pas sur Estimate ou Invoice.

 

Comment on évite cette erreur de manière simple ?


Le problème vient du fait que contact peut être falsy tout en existant, donc le compilateur ne peut rien conclure du test if (document.contact). Il suffit je suppose de changer le test en !== undefined

Message cité 1 fois
Message édité par hephaestos le 20-06-2021 à 21:51:18
mood
Publicité
Posté le 20-06-2021 à 20:12:19  profilanswer
 

n°2388718
Kenshineuh
Posté le 20-06-2021 à 20:20:24  profilanswer
 

hephaestos a écrit :


Le problème vient du fait que contact peut être falsy tout en existant, donc le compilateur ne peut rien conclure du test if (document.contact). Il suffit je suppose de changer le test en !== ''


 
Le problème est sur la ligne de la fin. Le code fonctionne, c'est juste typescript qui connait pas clientFirstname sur Estimate donc me lève une erreur, mais sinon ça fonctionne.
 
Du coup à moins de cast en type Order la dernière ligne, je sais pas si y'a mieux. :jap:

n°2388719
masklinn
í dag viðrar vel til loftárása
Posté le 20-06-2021 à 20:54:10  profilanswer
 

Kenshineuh a écrit :

Dites les experts typescript, comment vous gérez le cas suivant :
 
J'ai des documents de ce type :
 

Code :
  1. export type Document = Order | Estimate | Invoice;


 
Et j'ai une fonction du style :
 

Code :
  1. const getClient = (document: Document) => {
  2.  
  3. if (document.contact) {
  4.  return document.contact.firstname
  5. }
  6.  
  7. return document.clientFirstname // Property 'clientFirstname ' does not exist on type Estimate
  8.  
  9. }


 
clientFirstname est une vieille propriété qui est encore sur de vieux Order mais qui n'existe pas sur Estimate ou Invoice.  
 
Comment on évite cette erreur de manière simple ?


Mais "contact" est sur tous les types? Il est censé se passer quoi s'il est à `null` sur un `Estimate`, ça renvoie implicitement `undefined`?
 
Sinon tu peux ptet checker `"clientFirstName" in document` ou `typeof document.clientFirstName !== 'undefined'`. Ou bien par un moment je pense que `document["clientFirstname"]` ne checkait rien, je sais pas si c'est encore le cas.


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2388720
ratibus
Posté le 20-06-2021 à 20:56:26  profilanswer
 

el muchacho a écrit :

Hello, vous souvenez-vous du site qui permet de suivre l'évolution des prix des annonces immo ? Il y a castorus, mais avant il y avait un site un peu plus rustique.


Ca m'intéresse si tu trouves.  

el muchacho a écrit :


 
https://i.kym-cdn.com/entries/icons [...] hejoke.jpg
 
(j'ai mis le lien vers la vidéo d'il y a 3j)


Jokes are supposed to be funny :o

Kenshineuh a écrit :


 
Le problème est sur la ligne de la fin. Le code fonctionne, c'est juste typescript qui connait pas clientFirstname sur Estimate donc me lève une erreur, mais sinon ça fonctionne.
 
Du coup à moins de cast en type Order la dernière ligne, je sais pas si y'a mieux. :jap:


Pourquoi t'implémentes pas une méthode getClient dans tes objets ? J'ai l'impression que c'est monté à l'envers non ?


---------------
Mon blog
n°2388722
Kenshineuh
Posté le 20-06-2021 à 21:11:25  profilanswer
 

masklinn a écrit :


Mais "contact" est sur tous les types? Il est censé se passer quoi s'il est à `null` sur un `Estimate`, ça renvoie implicitement `undefined`?

 

Sinon tu peux ptet checker `"clientFirstName" in document` ou `typeof document.clientFirstName !== 'undefined'`. Ou bien par un moment je pense que `document["clientFirstname"]` ne checkait rien, je sais pas si c'est encore le cas.

 


Contact est sur tous les types oui. Mais on pourrait imaginer un monde où il ne l'est pas et que je me retrouve avec le même type d'erreur. Et il ne peut plus être pas être à null.
En fait au début de l'appli, les attributs du client était dans un seul type de document (Order) et ils servaient juste pour imprimer un PDF. Maintenant il existe une table Contact et donc une vraie relation qui va avec.

 

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.
Donc le typeof ne règle pas le soucis car typescript me souligne le problème dans le typeof.
Par contre le document["clientFirstname"] est assez étrange. Ca fonctionne dans mon ide, TS me dit rien, mais quand je test sur le playground online, il me sort une erreur. :D

 
ratibus a écrit :


Pourquoi t'implémentes pas une méthode getClient dans tes objets ? J'ai l'impression que c'est monté à l'envers non ?

 

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
n°2388723
el muchach​o
Comfortably Numb
Posté le 20-06-2021 à 21:15:21  profilanswer
 

ratibus a écrit :


Jokes are supposed to be funny :o


Faut mater la vidéo du lien :o

n°2388724
flo850
moi je
Posté le 20-06-2021 à 21:52:16  profilanswer
 

Kenshineuh a écrit :

Bah ça rentre quand même dans le premier if. Les erreurs typescript sont dans l'ide ou à la compilation mais n'empêche pas l'exécution.

 

https://www.typescriptlang.org/play [...] khn7e0T4IA

 

je reviens juste de dépouillement :o
je ferai un truc comme ça :
https://www.typescriptlang.org/play [...] xJ9gpdoiAA

Code :
  1. return (doc as  Estimate).contact?.firstname ?? (doc as Order).clientFirstname
  2. //  éventuellement en coupant avec un if / else si tu trouve que la ligne est un peu longue
  3. let estimate = doc as Estimate
  4. if(estimate) {
  5.   return estimate.contact.firstname // pas besoin de ? ici, on sait qu'order à un contact
  6. }
  7. return (doc as Order).clientFirstname

Message cité 1 fois
Message édité par flo850 le 20-06-2021 à 22:01:44

---------------

n°2388725
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 20-06-2021 à 21:54:05  profilanswer
 

Kenshineuh a écrit :

 

Le code fonctionne très bien sans le typage.


Pourquoi ça ? Qu'est-ce qui te fait dire que cette propriété existe, alors qu'elle n'est pas dans le type que tu déclares ?

 

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
n°2388726
flo850
moi je
Posté le 20-06-2021 à 21:54:37  profilanswer
 

il vérifie que contact n'est pas falsy, donc avec le duck typing, ça passe


---------------

n°2388727
Kenshineuh
Posté le 20-06-2021 à 22:00:55  profilanswer
 

flo850 a écrit :

 

je reviens juste de dépouillement :o
je ferai un truc comme ça :
https://www.typescriptlang.org/play [...] xJ9gpdoiAA

Code :
  1. return (doc as  Estimate).contact?.firstname ?? (doc as Order).clientFirstname


éventuellement en coupant avec un if / else si tu trouve que la ligne est un peu longue

 

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. :jap:

 


C'est compliqué de forcer le typage partout dans ce genre de cas. Car mes types de documents ont pas la même structure, je m'assure d'un if/else pour que mon code fonctionne, mais le typage ne plait pas à Typescript. Du coup si tu veux forcément typer tes variables mais que tu as une fonction un peu bateau avec des if/else selon la structure, t'es obligé de cast dans tous les sens. Ce qui est logique en soit, je m'attendais juste à un truc un peu plus sexy. :o

 
hephaestos a écrit :


Pourquoi ça ? Qu'est-ce qui te fait dire que cette propriété existe, alors qu'elle n'est pas dans le type que tu déclares ?

 

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.

 

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. :jap:


Message édité par Kenshineuh le 20-06-2021 à 22:03:23
mood
Publicité
Posté le 20-06-2021 à 22:00:55  profilanswer
 

n°2388728
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 20-06-2021 à 22:05:05  profilanswer
 

À 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
n°2388729
flo850
moi je
Posté le 20-06-2021 à 22:06:52  profilanswer
 

alors je suis une bille en typescript, je commence juste à lire la doc en prévision d'un prochain poste :o . Il y a probablement plus élégant
là c'est juste une solution rigoureuse ( mais un peu trop verbeuse à mon gout)


---------------

n°2388730
Kenshineuh
Posté le 20-06-2021 à 22:08:53  profilanswer
 

hephaestos a écrit :

À 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)

 

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. :D


Message édité par Kenshineuh le 20-06-2021 à 22:10:59
n°2388731
Mackila
Posté le 20-06-2021 à 22:24:34  profilanswer
 
n°2388732
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2021 à 09:23:05  profilanswer
 

Kenshineuh a écrit :

Dites les experts typescript, comment vous gérez le cas suivant :

 

J'ai des documents de ce type :

 
Code :
  1. export type Document = Order | Estimate | Invoice;
 

Et j'ai une fonction du style :

 
Code :
  1. const getClient = (document: Document) => {
  2.  
  3. if (document.contact) {
  4.  return document.contact.firstname
  5. }
  6.  
  7. return document.clientFirstname // Property 'clientFirstname ' does not exist on type Estimate
  8.  
  9. }
 

clientFirstname est une vieille propriété qui est encore sur de vieux Order mais qui n'existe pas sur Estimate ou Invoice.

 

Comment on évite cette erreur de manière simple ?

 

je suis pas un expert Typescript, mais en C# (qui est proche de  TS), je ferais un truc du genre :

 
Code :
  1. if (document.GetType == typeof(Order)) {
  2.   return document.clientFirstName;
  3. } else {
  4.   return document.contact.firstName;
  5. }
 

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)
n°2388733
___alt
mvn -T 4C clean install
Posté le 21-06-2021 à 10:04:52  profilanswer
 

Alors que mettre plein de return c'est plus lisible :o


---------------
Crack the Egg : escape game à Paris (Gare de Lyon) | "Wenn es einen Gott gibt muß er mich um Verzeihung bitten."
n°2388734
skeye
Posté le 21-06-2021 à 10:11:50  profilanswer
 

Harkonnen a écrit :


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


 
Moi j'aurais juste dégagé le else{} inutile [:doc petrus]


---------------
Can't buy what I want because it's free -
n°2388735
Kenshineuh
Posté le 21-06-2021 à 10:13:45  profilanswer
 

Harkonnen a écrit :

 

je suis pas un expert Typescript, mais en C# (qui est proche de  TS), je ferais un truc du genre :

 
Code :
  1. if (document.GetType == typeof(Order)) {
  2.   return document.clientFirstName;
  3. } else {
  4.   return document.contact.firstName;
  5. }
 

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

 

:jap:

 

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. :o

Message cité 1 fois
Message édité par Kenshineuh le 21-06-2021 à 10:40:58
n°2388736
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2021 à 10:37:11  profilanswer
 

___alt a écrit :

Alors que mettre plein de return c'est plus lisible :o


je suis d'accord que c'est pas génial non plus, mais ça a au moins le mérite de permettre de visualiser le flow du code de façon un peu plus lisible que le ternaire :o
 
 

skeye a écrit :


 
Moi j'aurais juste dégagé le else{} inutile [:doc petrus]


oh bordel, oui [:mlc]
 


---------------
J'ai un string dans l'array (Paris Hilton)
n°2388737
koskoz
They see me trollin they hatin
Posté le 21-06-2021 à 10:57:09  profilanswer
 

Harkonnen a écrit :


oh bordel, oui [:mlc]
 


 
Comment t'as pu passer à côté vu la taille de ton écran [:petrus dei]


---------------
Blabla Revival, le forum qui envoie du caca | Blog | Twitter | Stats
n°2388738
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2021 à 10:58:11  profilanswer
 

koskoz a écrit :


 
Comment t'as pu passer à côté vu la taille de ton écran [:petrus dei]


j'ai passé un week-end difficile, chuis cassé de partout et j'ai trop de courbatures pour tourner la tête :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°2388739
___alt
mvn -T 4C clean install
Posté le 21-06-2021 à 11:08:59  profilanswer
 

Harkonnen a écrit :

je suis d'accord que c'est pas génial non plus, mais ça a au moins le mérite de permettre de visualiser le flow du code de façon un peu plus lisible que le ternaire :o


 
Dans le cas où le ternaire est utilisé pour choisir entre deux valeurs, le flot de code est suffisamment trivial justement :o


---------------
Crack the Egg : escape game à Paris (Gare de Lyon) | "Wenn es einen Gott gibt muß er mich um Verzeihung bitten."
n°2388740
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-06-2021 à 11:20:16  profilanswer
 

Kenshineuh a écrit :

 

:jap:

 

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. :o


Certes, mais Typescript ne dit rien du tout, c'est toi qui lui dis que cette propriété n'existe pas en lui donnant des types faux !

Message cité 1 fois
Message édité par hephaestos le 21-06-2021 à 11:20:31
n°2388741
Kenshineuh
Posté le 21-06-2021 à 11:41:23  profilanswer
 

hephaestos a écrit :


Certes, mais Typescript ne dit rien du tout, c'est toi qui lui dis que cette propriété n'existe pas en lui donnant des types faux !

 

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 :

Code :
  1. return (document as Order).clientFirstname
 

2. Avec un type custom :

Code :
  1. interface CustomEstimate extends Estimate {
  2.   clientFirstname : string;
  3. }
  4. export const getClient = (document: Order | CustomEstimate) => {
  5. // blabla
  6. }
 

3. Avec un check de type :

Code :
  1. const isOrder = (document: Order | Estimate): document is Order => (document as Order).clientFirstname !== undefined;
  2. if(isOrder(document)) {
  3.   return document.clientFirstname
  4. }
 

4. Différent du 3 mais qui marche :

Code :
  1. if("clientFirstname" in document) {
  2.   return document.clientFirstname
  3. }
 


Le 2 est à chier, le 1, 3 et 4 me paraissent pas mal et je demandais s'il existait une autre manière de faire. :jap:

 

Edit, ajout du 4. :o

Message cité 2 fois
Message édité par Kenshineuh le 21-06-2021 à 11:55:15
n°2388742
nraynaud
lol
Posté le 21-06-2021 à 11:53:43  profilanswer
 

yeah, nouveau traitement médical, 4 ème en un an \o/


---------------
trainoo.com, c'est fini
n°2388743
Blackyell
$question = $to_be || !$to_be;
Posté le 21-06-2021 à 11:55:11  profilanswer
 

Kenshineuh a écrit :


 
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 :

Code :
  1. return (document as Order).clientFirstname


 
2. Avec un type custom :

Code :
  1. interface CustomEstimate extends Estimate {
  2.   clientFirstname : string;
  3. }
  4. export const getClient = (document: Order | CustomEstimate) => {
  5. // blabla
  6. }


 
3. Avec un check de type et donc deux méthodes dédiées :

Code :
  1. const isOrder = (document: Order | Estimate): document is Order => (document as Order).clientFirstname !== undefined;
  2. if(isOrder(document)) {
  3.   return document.clientFirstname
  4. }


 
4. Différent du 3 mais qui marche :

Code :
  1. if("clientFirstname" in document) {
  2.   return document.clientFirstname
  3. }


 
 
Le 2 est à chier, le 1, 3 et 4 me paraissent pas mal et je demandais s'il existait une autre manière de faire. :jap:
 
Edit, ajout du 4. :o


 
Le 1 me semble tout à fait approprié.

n°2388744
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-06-2021 à 12:01:06  profilanswer
 

Kenshineuh a écrit :

 

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 3 choix :

 

1. Avec un cast :

Code :
  1. return (document as Order).clientFirstname
 

2. Avec un type custom :

Code :
  1. interface CustomEstimate extends Estimate {
  2.   clientFirstname : string;
  3. }
  4. export const getClient = (document: Order | CustomEstimate) => {
  5. // blabla
  6. }
 

3. Avec un check de type et donc deux méthodes dédiées :

Code :
  1. const isOrder = (document: Order | Estimate): document is Order => (document as Order).clientFirstname !== undefined;
  2. if(isOrder(document)) {
  3.   return order.clientFirstname
  4. }
 


Le 2 est à chier, le 1 et le 3 me paraissent pas mal et je demandais s'il existait une autre manière de faire. :jap:

 

Ç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
n°2388745
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-06-2021 à 12:01:48  profilanswer
 

Blackyell a écrit :


 
Le 1 me semble tout à fait approprié.


C'est un cast c'est jamais approprié.

n°2388746
Kenshineuh
Posté le 21-06-2021 à 12:34:53  profilanswer
 

hephaestos a écrit :


C'est un cast c'est jamais approprié.

 

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) ?

 
Code :
  1. const maRoute = async (req: Request, res: Response) => {
  2.   const {
  3.     address,
  4.     city,
  5.     businessName,
  6.     email,
  7.     firstname,
  8.     lastname,
  9.     phone,
  10.     zipCode,
  11.   } = req.body as RequestBodyType;
  12. }
 

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
n°2388747
masklinn
í dag viðrar vel til loftárása
Posté le 21-06-2021 à 12:37:02  profilanswer
 

Kenshineuh a écrit :


 
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) ?
 

Code :
  1. const maRoute = async (req: Request, res: Response) => {
  2.   const {
  3.     address,
  4.     city,
  5.     businessName,
  6.     email,
  7.     firstname,
  8.     lastname,
  9.     phone,
  10.     zipCode,
  11.   } = req.body as RequestBodyType;
  12. }


 
C'est la manière la plus simple que j'ai trouvé dans ce cas. :/


En théorie Request#body devrait être typé  RequestBody(Type) de base non?


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2388748
Kenshineuh
Posté le 21-06-2021 à 12:39:02  profilanswer
 

masklinn a écrit :


En théorie Request#body devrait être typé  RequestBody(Type) de base non?

 


De base c'est écrit ça : Request<ParamsDictionary, any, any, QueryString.ParsedQs, Record<string, any>>.body: any

 

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
n°2388749
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-06-2021 à 12:41:12  profilanswer
 

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
n°2388750
Kenshineuh
Posté le 21-06-2021 à 12:42:18  profilanswer
 

ok merci. :jap:

n°2388751
masklinn
í dag viðrar vel til loftárása
Posté le 21-06-2021 à 12:55:37  profilanswer
 

hephaestos a écrit :

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).


Sauf que afaik les casts typescript dont pas vérifiés (sur any/unknown). Ça déclare juste que la valeur est du type X sans se poser plus de questions.

Message cité 1 fois
Message édité par masklinn le 21-06-2021 à 12:55:53

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2388752
Jubijub
Parce que je le VD bien
Posté le 21-06-2021 à 13:15:49  profilanswer
 

Citation :


In his book Amazon Unbound, Brad Stone reports that founder Jeff Bezos once told David Niekerk, a senior human resources executive, “if we ever appear in the ‘100 best places to work in America’, you’ve screwed this place up”. Niekerk told the Times that Bezos deliberately limited the upward progress of warehouse workers because entrenching them would lead to “a march to mediocrity”.


 


---------------
Jubi Photos : Flickr - 500px
n°2388753
Dion
Acceuil
Posté le 21-06-2021 à 13:24:25  profilanswer
 

Je boycott prime day pour la peine !


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Elmoricq 8->
n°2388754
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 21-06-2021 à 13:37:26  profilanswer
 

masklinn a écrit :


Sauf que afaik les casts typescript dont pas vérifiés (sur any/unknown). Ça déclare juste que la valeur est du type X sans se poser plus de questions.


Oui, selon la confiance qu'on a à ce moment dans les données qu'on traite on doit vérifier que le type correspond. Avec des protobufs qui viennent de backend connus c'est en général pas un problème, le format a été conçu pour ça.

n°2388755
Plam
:o
Posté le 21-06-2021 à 13:41:34  profilanswer
 

Jubijub a écrit :

Citation :


In his book Amazon Unbound, Brad Stone reports that founder Jeff Bezos once told David Niekerk, a senior human resources executive, “if we ever appear in the ‘100 best places to work in America’, you’ve screwed this place up”. Niekerk told the Times that Bezos deliberately limited the upward progress of warehouse workers because entrenching them would lead to “a march to mediocrity”.


 


 
Le perso parfaitement caricaturé dans South Park quoi…
 
https://nextcloud.vates.fr/index.php/apps/files_sharing/publicpreview/aEzGWHF3Z64geyk?x=1274&y=973&a=true&file=Jeff_Bezos.webp&scalingup=0

Message cité 1 fois
Message édité par Plam le 21-06-2021 à 13:50:12

---------------
Ossifié, comme fusionné dans son cockpit
n°2388756
sligor
Calme, mais pas trop
Posté le 21-06-2021 à 13:52:42  profilanswer
 

Plam a écrit :


 
Le perso parfaitement caricaturé dans South Park quoi…
 
https://nextcloud.vates.fr/index.ph [...] calingup=0


c'est pas sympa pour ceux qui perdent leurs cheveux  [:cerveau sadnoir]

n°2388757
___alt
mvn -T 4C clean install
Posté le 21-06-2021 à 13:53:02  profilanswer
 

Jubijub a écrit :

Citation :


In his book Amazon Unbound, Brad Stone reports that founder Jeff Bezos once told David Niekerk, a senior human resources executive, “if we ever appear in the ‘100 best places to work in America’, you’ve screwed this place up”. Niekerk told the Times that Bezos deliberately limited the upward progress of warehouse workers because entrenching them would lead to “a march to mediocrity”.


 


 
J'aime beaucoup la pétition pour ne pas autoriser son retour sur Terre.


---------------
Crack the Egg : escape game à Paris (Gare de Lyon) | "Wenn es einen Gott gibt muß er mich um Verzeihung bitten."
n°2388758
Plam
:o
Posté le 21-06-2021 à 14:09:40  profilanswer
 

___alt a écrit :

 

J'aime beaucoup la pétition pour ne pas autoriser son retour sur Terre.

 

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 [:ddr555]


Message édité par Plam le 21-06-2021 à 14:10:14

---------------
Ossifié, comme fusionné dans son cockpit
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  24096  24097  24098  ..  24176  24177  24178  24179  24180  24181

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@prog] Le chat interne de plamcorp


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR