DEV Community

Discussion on: L'opérateur de chaînage optionnel : une nouveauté de TypeScript 3.7

Collapse
 
daviddalbusco profile image
David Dal Busco

Merci pour le post en français de surcroît 👍

Le point est pas une typo dans le dernier exemple si teamYounup est un tableau?

let member = teamYounup?.[0];
Enter fullscreen mode Exit fullscreen mode

vs

let member = teamYounup?[0];
Enter fullscreen mode Exit fullscreen mode
Collapse
 
necraidan profile image
Benjamin🦸‍♂️Auzanneau™ • Edited

Sans point, le moteur JavaScript va interpréter cela comme un ternaire avec : manquant.
Pour TypeScript, la transpilation ne sera fera pas non plus et lèvera une erreur similaire.
Le point est donc essentiel 👌

Exemple en JavaScript sur Firefox 75

let member = teamYounup?[0]; // 'SyntaxError: missing : in conditional expression'

EDIT :
Merci @brack0 pour ta réponse qui a été publiée un peu juste avant moi 👌

Collapse
 
daviddalbusco profile image
David Dal Busco

Ça fait sens, c'est plus jolie sans point, enfin ça se discute, mais ça fait sens.

Merci pour les explications @necraidan et @brack0 👍

Collapse
 
brack0 profile image
Denis SOURON

Malheureusement on ne peut pas se passer du ?., même pour les tableaux.
La principale raison qui justifie ce choix est la complexité d'interprétation du chainage optionnel vs l'opérateur ternaire.

Par exemple, ces deux expressions deviennent plus difficile à "parser" en l'absence du point dans la syntaxe.

obj?[expr].filter(fun):0
func?(x - 2) + 3 :1
Enter fullscreen mode Exit fullscreen mode