Supposons, dans l’exemple qui suit, que l’on veuille extraire le nom de la cité au sein d’un enregistrement obtenu d’une API tierce : | Code TypeScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | const apiResult = { name: "Patrick elgato", office: { primary: { city: "Lohove", state: "South" } } } |
| Code TypeScript : | Sélectionner tout |
1 2 | const city = apiResult.office.primary.city; // --> "Lohove" |
| Code TypeScript : | Sélectionner tout |
1 2 3 4 | const apiResult = { name: "Patrick elgato" }const city = apiResult.office.primary.city; // --> Uncaught TypeError: Cannot read property 'primary' of null |
/
| Code TypeScript : | Sélectionner tout |
1 2 3 4 5 6 | / if `a` is `undefined` or `null`: // return `undefined` // else: // return `a.b` a?.b;// The optional chaining operator is equivalent to: (a == null) ? undefined : a.b; |
| Code TypeScript : | Sélectionner tout |
1 2 | const city = apiResult?.office?.primary?.city; // --> string | undefined |
En effet, le contenu de discussions en cours sur le GitHub de Microsoft laisse filtrer que TypeScript 3.7.0 est pressenti pour offrir la prise en charge de l’opérateur de chaînage d’optionnels. TypeScript 3.6.0 est disponible en bêta depuis peu et la version finale est prévue pour la fin du mois en cours. TypeScript 3.7.0 devrait être disponible au mois d’octobre si l’on prend en compte le fait que de nouvelles versions du langage de programmation libre et open source sortent approximativement tous les deux mois.
La décision de l’équipe TypeScript fait suite à la publication du troisième brouillon ECMAscript relatif à la prise en charge de l’opérateur de chaînage d’optionnels. Ce dernier permet grosso modo d’entrevoir les axes retenus du côté de Microsoft. La fenêtre de code dans la suite dresse une liste de cas de figures de base auxquels les développeurs pourront faire face sous TypeScript 3.7.0 :
| Code TypeScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | a?.b // undefined si `a` est null/undefined, sinon `a.b`. a == null ? undefined : a.b a?.[x] // undefined si `a`est null/undefined, sinon `a[x]`. a == null ? undefined : a[x] a?.b() // undefined si `a` est null/undefined a == null ? undefined : a.b() // génère une erreur de type si `a.b` nest pas une fonction // sinon, évaluation de `a.b()` a?.() // undefined si `a` est null/undefined a == null ? undefined : a() // génère une erreur de type si `a` nest ni null/undefined, ni une fonction // sinon appelle la fonction `a` |
| Code TypeScript : | Sélectionner tout |
1 2 3 4 | // falls back to a default value when response.settings is missing or nullish // (response.settings == null) or when response.settings.animationDuration is missing // or nullish (response.settings.animationDuration == null) const animationDuration = response.settings?.animationDuration ?? 300; |
La publication d’un troisième brouillon ECMAscript relatif à la prise en charge de l’opérateur de chaînage d’optionnels est le signe que la fonctionnalité se rapproche des développeurs qui font usage de JavaScript également. C’est désormais la version finale de la spécification qui est attendue. En attendant, Microsoft va prendre les devants. La manœuvre pourrait, avec les retours d’expérience des développeurs TypeScript, influer sur les choix finaux du côté de JavaScript.
Sources : ticket TypeScript, tc39
Et vous ?
Qu’en pensez-vous ?
Comment accueillez-vous la disponibilité future de cet opérateur pour les langages de script TyepScript et JavaScript ?
Entrevoyez-vous des inconvénients à l’introduction de cette fonctionnalité ? Si oui, lesquels ?Voir aussi :
Après avoir réécrit Angular en TypeScript, Google approuve le surensemble JavaScript de Microsoft pour ses développements internes
Google s'oriente vers TypeScript et voici pourquoi, selon Evan Martin, un ingénieur de la firme qui travaille sur le langage
TypeScript 3.1 est disponible, cette version s'accompagne des redirections de versions ainsi que des types de tableau et de tuple mappables
Microsoft annonce la disponibilité de TypeScript 3.3 qui apporte une meilleure gestion des projets composites introduits par TypeScript 3.0
La RC de TypeScript 3.4 est disponible et apporte une nouvelle syntaxe pour ReadonlyArray ainsi que la vérification de type pour globalThis
Vous avez lu gratuitement 3 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.