{"id":232239,"date":"2023-01-12T11:42:00","date_gmt":"2023-01-12T08:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232239"},"modified":"2022-11-10T08:15:12","modified_gmt":"2022-11-10T05:15:12","slug":"5-fonctionnalites-javascript-de-pointe-pour-ameliorer-votre-code","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/5-fonctionnalites-javascript-de-pointe-pour-ameliorer-votre-code\/","title":{"rendered":"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code"},"content":{"rendered":"\n<p>Les fonctionnalit\u00e9s JavaScript ne cessent de cro\u00eetre et d&rsquo;en recevoir de nouvelles comme les op\u00e9rateurs, les constructions de syntaxe, les expressions. Beaucoup ont \u00e9t\u00e9 introduits ces derni\u00e8res ann\u00e9es et certains d&rsquo;entre eux sont d\u00e9j\u00e0 une seconde nature, comme l&rsquo;expression de la fl\u00e8che grasse ou l&rsquo; op\u00e9rateur de <code>=&gt;<\/code>propagation d&rsquo;objet .<code>...<\/code><\/p>\n<h2>Les fonctionnalit\u00e9s JavaScript commencent en tant que propositions<\/h2>\n<p>Toutes ces fonctionnalit\u00e9s JavaScript commencent par des propositions soumises au TC 39. Le <a href=\"https:\/\/www.ecma-international.org\/memento\/tc39-rf-tg.htm\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Comit\u00e9 Technique 39<\/a> est en charge de standardiser :<\/p>\n<blockquote>\n<p>le langage de programmation \u00e0 usage g\u00e9n\u00e9ral, multiplateforme et ind\u00e9pendant du fournisseur ECMAScript (JavaScript). Cela inclut la syntaxe du langage, la s\u00e9mantique, les biblioth\u00e8ques et les technologies compl\u00e9mentaires qui prennent en charge le langage.<\/p>\n<\/blockquote>\n<p>Il existe de nombreuses propositions JavaScript que nous pouvons commencer \u00e0 ajouter \u00e0 notre flux d\u00e8s aujourd&rsquo;hui, gr\u00e2ce \u00e0 <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Babel, le compilateur JavaScript<\/a>. Certains d&rsquo;entre eux offrent plus de clart\u00e9, comme le s\u00e9parateur num\u00e9rique. D&rsquo;autres, comme les <code>do<\/code>expressions, introduisent la possibilit\u00e9 d&rsquo;avoir des conditions complexes m\u00e9lang\u00e9es avec des balises React JSX.<\/p>\n<p>Examinons dans cet article 5 fonctionnalit\u00e9s JavaScript qui sont encore au stade de la proposition mais que nous pouvons utiliser avec Babel, et qui am\u00e9lioreront consid\u00e9rablement votre exp\u00e9rience de codage.<\/p>\n<p>Chacun a un lien vers sa page Babel o\u00f9 vous pouvez voir comment configurer Babel pour l&rsquo;utiliser, bien que les fonctionnalit\u00e9s JavaScript propos\u00e9es d\u00e9crites ici soient d\u00e9j\u00e0 incluses avec Babel 7. Chaque section a \u00e9galement un lien vers sa proposition dans l&rsquo; organisation <a href=\"https:\/\/github.com\/tc39\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ecma TC39<\/a> sur <a href=\"https:\/\/startfunction.com\/tag\/github\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>.<\/p>\n<h2>Op\u00e9rateur de coalescence nulle<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbbe16eaf.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbbe16eaf.png\" alt=\"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code\" ><\/a><\/p>\n<p>Proposition: <a href=\"https:\/\/github.com\/tc39\/proposal-nullish-coalescing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposal-nullish-coalescing<\/a><\/p>\n<p>Babel\u00a0: <a href=\"https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-nullish-coalescing-operator.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-nullish-coalescing-operator.html<\/a><\/p>\n<p>Cette proposition JavaScript d\u00e9crit un op\u00e9rateur qui permet de fournir une valeur de repli \u00e0 droite de l&rsquo;op\u00e9rateur lorsqu&rsquo;une variable ou une propri\u00e9t\u00e9 d&rsquo;objet est ind\u00e9finie. S&rsquo;il n&rsquo;est pas ind\u00e9fini, il utilisera le c\u00f4t\u00e9 gauche de l&rsquo;op\u00e9rateur\u00a0:<\/p>\n<pre><code>const maybeUndef = undefined;\nconst val = maybeUndef ?? 2021; <\/code><\/pre>\n<p>Cela revient \u00e0 l&rsquo;\u00e9crire sous la forme d&rsquo;un op\u00e9rateur ternaire\u00a0:<\/p>\n<pre><code>const maybeUndef = undefined;\nconst val = maybeUndef? maybeUndef: 2021; <\/code><\/pre>\n<p>Notez que cet op\u00e9rateur ne v\u00e9rifie pas que la variable n&rsquo;existe pas. Cela lancera une erreur\u00a0:<\/p>\n<pre><code>const val = maybeUndef ?? 2021;  <\/code><\/pre>\n<p>Mais attention, cet op\u00e9rateur n&rsquo;est pas 100% comme un op\u00e9rateur ternaire qui renvoie le premier c\u00f4t\u00e9 si la condition \u00e9valu\u00e9e est vraie. Il n&rsquo;\u00e9valuera pas les valeurs qui sont g\u00e9n\u00e9ralement fausses en <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScript<\/a> en <code>false<\/code>. Par exemple, une cha\u00eene vide ne sera pas consid\u00e9r\u00e9e <code>false<\/code>:<\/p>\n<pre><code>const someEmptyString = '';\nconst val = someEmptyString ?? 'fallback'; <\/code><\/pre>\n<p>Contrairement \u00e0 cet op\u00e9rateur de coalescence nul, un op\u00e9rateur ternaire aurait \u00e9t\u00e9 lanc\u00e9 <code>fallback<\/code>\u00e0 la suite de cette \u00e9valuation.<\/p>\n<h2>Op\u00e9rateur de cha\u00eenage en option<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbbfc7df0.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbbfc7df0.png\" alt=\"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code\" ><\/a><\/p>\n<p>Proposition: <a href=\"https:\/\/github.com\/tc39\/proposal-optional-chaining\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposal-optional-chaining<\/a><\/p>\n<p>Babel\u00a0: <a href=\"https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-optional-chaining.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-optional-chaining.html<\/a><\/p>\n<p>Cet op\u00e9rateur fonctionne \u00e9galement sur les variables et les propri\u00e9t\u00e9s des objets: il v\u00e9rifie si les propri\u00e9t\u00e9s imbriqu\u00e9es que nous parcourons existent ou non. Sans cet op\u00e9rateur, nous devons v\u00e9rifier chaque propri\u00e9t\u00e9 imbriqu\u00e9e\u00a0:<\/p>\n<pre><code>const val = anObj &amp;&amp; anObj.aProp &amp;&amp; anObj.aProp.aNestedProp<\/code><\/pre>\n<p>Avec le nouvel op\u00e9rateur de cha\u00eenage optionnel, nous pouvons faire quelque chose comme :<\/p>\n<pre><code>const val = anObj.aProp?.aNestedProp<\/code><\/pre>\n<p>Cela semble beaucoup plus clair et c&rsquo;est plus court \u00e0 \u00e9crire. Cet op\u00e9rateur fonctionne \u00e9galement avec des tableaux num\u00e9riques, il est donc pr\u00e9f\u00e9rable de travailler avec des collections\u00a0:<\/p>\n<pre><code>const val = anObj.anArray[0]?.someProp<\/code><\/pre>\n<p>Et nous pouvons empiler plusieurs op\u00e9rateurs\u00a0:<\/p>\n<pre><code>const val = anObj.anArray[0]?.someProp?.aNestedProp<\/code><\/pre>\n<p>Et si nous combinions cela avec le pr\u00e9c\u00e9dent, la coalescence nulle\u00a0? Nous obtenons une syntaxe qui v\u00e9rifie que chaque propri\u00e9t\u00e9 travers\u00e9e existe et, si ce n&rsquo;est pas le cas, fournit une valeur de secours\u00a0:<\/p>\n<pre><code>const val = anObj.anArray[0]?.someProp ?? 'someDefaultValue'<\/code><\/pre>\n<p>Si l&rsquo;une des valeurs n&rsquo;existe pas, elle renverra <code>someDefaultValue<\/code>. <a href=\"https:\/\/lodash.com\/docs#get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">La combinaison de ces deux op\u00e9rateurs est un excellent moyen de remplacer la fonction get<\/a> de lodash .<\/p>\n<h2>Op\u00e9rateur de pipeline<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc121b73.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc121b73.png\" alt=\"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code\" ><\/a><\/p>\n<p>Proposition: <a href=\"https:\/\/github.com\/tc39\/proposal-pipeline-operator\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposal-pipeline-operator<\/a><\/p>\n<p>Babel\u00a0: <a href=\"https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-pipeline-operator\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-pipeline-op<\/a> <a href=\"https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-pipeline-operator\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">e<\/a> <a href=\"https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-pipeline-operator\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rator<\/a><\/p>\n<p>Cet op\u00e9rateur fait partie de plusieurs fonctionnalit\u00e9s JavaScript exp\u00e9rimentales, et celle-ci offre plus de lisibilit\u00e9 lors de l&rsquo;encha\u00eenement de plusieurs fonctions. Consid\u00e9rez la fonction suivante :<\/p>\n<pre><code>const reverseWords = \n      str =&gt; str\n        .split( ' ') .reduce( (revStr, word) =&gt; [ word, ...revStr ], []) .join( ' ' );\n\nconsole.log( reverseWords( 'this is fun') ); <\/code><\/pre>\n<p>Si nous devons r\u00e9utiliser ces transformations partielles encha\u00een\u00e9es, nous pouvons les d\u00e9composer en diff\u00e9rentes fonctions, puis composer le r\u00e9sultat en les utilisant\u00a0:<\/p>\n<pre><code>const splitBySpace = str =&gt; str.split( ' ' );\nconst reverseArray = arr =&gt; arr.reduce( (acc, cur) =&gt; [ cur, ...acc ], [] );\nconst joinWithSpace = arr =&gt; arr.join( ' ' );\n\nconst reverseWords =\n    str =&gt; joinWithSpace(\n        reverseArray(\n            splitBySpace(\n                str)) );\n\nconsole.log( reverseWords( 'this is fun') ); <\/code><\/pre>\n<p>Ce qui est \u00e9trange \u00e0 ce sujet, c&rsquo;est que nous devons commencer \u00e0 lire cela du bas, la <code>splitBySpace<\/code>ligne, vers le haut, afin de comprendre les transformations appliqu\u00e9es \u00e0 la cha\u00eene. Cela va \u00e0 l&rsquo;encontre de notre flux de lecture naturel, de haut en bas. Nous nous retrouvons \u00e9galement avec toutes ces vilaines parenth\u00e8ses pendantes. Cela pourrait \u00eatre \u00e9crit en une seule ligne et ce n&rsquo;est pas beaucoup plus joli:<\/p>\n<pre><code>const reverseWords = str =&gt; joinWithSpace( reverseArray( splitBySpace( str)) );<\/code><\/pre>\n<p>Ici, nous devons commencer \u00e0 lire de la fonction centrale vers les fonctions externes, ou de droite \u00e0 gauche, ce qui est contre-intuitif pour la lecture occidentale de gauche \u00e0 droite.<\/p>\n<p>L&rsquo;op\u00e9rateur de pipeline peut rendre ces constructions beaucoup plus lisibles et similaires au cha\u00eenage que nous avions \u00e0 l&rsquo;origine avant de d\u00e9placer les transformations vers des fonctions distinctes\u00a0:<\/p>\n<pre><code>const reverseWords =\n    str =&gt; str\n        |&gt; splitBySpace\n        |&gt; reverseArray\n        |&gt; joinWithSpace;<\/code><\/pre>\n<p>Maintenant, les transformations appliqu\u00e9es sont \u00e9crites de la m\u00eame mani\u00e8re que notre fa\u00e7on d&rsquo;\u00e9crire, de haut en bas, elles sont plus claires \u00e0 lire et nous n&rsquo;avons plus de parenth\u00e8ses qui tra\u00eenent. Succ\u00e8s!<\/p>\n<h2>S\u00e9parateur num\u00e9rique<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc276ca0.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc276ca0.png\" alt=\"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code\" ><\/a><\/p>\n<p>Proposition: <a href=\"https:\/\/github.com\/tc39\/proposal-numeric-separator\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposal-numeric-separator<\/a><\/p>\n<p>Babel\u00a0: <a href=\"https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-numeric-separator.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/babeljs.io\/docs\/en\/next\/babel-plugin-proposal-numeric-separator.html<\/a><\/p>\n<p>Ce s\u00e9parateur num\u00e9rique est diff\u00e9rent des autres fonctionnalit\u00e9s JavaScript puisqu&rsquo;il ne s&rsquo;agit pas d&rsquo;un op\u00e9rateur. C&rsquo;est une construction syntaxique qui rend les litt\u00e9raux num\u00e9riques plus lisibles en cr\u00e9ant une s\u00e9paration visuelle entre les groupes de chiffres. Les grands litt\u00e9raux num\u00e9riques sont difficiles \u00e0 analyser et \u00e0 comprendre rapidement, en particulier lorsqu&rsquo;un chiffre est r\u00e9p\u00e9t\u00e9 plusieurs fois. Par exemple:<\/p>\n<pre><code>const longNum = 1000000000000;<\/code><\/pre>\n<p>C&rsquo;est difficile \u00e0 comprendre d&rsquo;un simple coup d&rsquo;\u0153il. Ce s\u00e9parateur le rend plus lisible :<\/p>\n<pre><code>const longNum = 1_000_000_000_000;<\/code><\/pre>\n<p>Maintenant, nous pouvons rapidement comprendre qu&rsquo;il s&rsquo;agit d&rsquo;un billion.<\/p>\n<h2>Faire des expressions<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc5290ed.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157554-61e6bbc5290ed.png\" alt=\"5 fonctionnalit\u00e9s JavaScript de pointe pour am\u00e9liorer votre code\" ><\/a><\/p>\n<p>Proposition: <a href=\"https:\/\/github.com\/tc39\/proposal-do-expressions\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposal-do-expressions<\/a><\/p>\n<p>Babel: <a href=\"https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-do-expressions\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/babeljs.io\/docs\/en\/babel-plugin-proposal-do-expressions<\/a><\/p>\n<p>La derni\u00e8re des nouvelles fonctionnalit\u00e9s JavaScript que nous allons aborder est une expression qui peut \u00eatre \u00e9valu\u00e9e. Le r\u00e9sultat de cette expression vient apr\u00e8s l&rsquo;ex\u00e9cution d&rsquo;un bloc qui peut contenir plusieurs instructions. Nous pouvons facilement comprendre les expressions do si nous traduisons une expression d&rsquo;op\u00e9rateur ternaire comme celle-ci\u00a0:<\/p>\n<pre><code>const res = isCold( color )? 'light-blue': 'orange';<\/code><\/pre>\n<p>On \u00e9crirait l&rsquo; <code>do{}<\/code>expression \u00e9quivalente comme ceci :<\/p>\n<pre><code>const res = do {\n    if (isCold( color)) {\n        'light-blue';\n    } else {\n        'orange';\n    }\n};<\/code><\/pre>\n<p>Notez que nous n&rsquo;avons pas \u00e0 renvoyer la valeur car il ne s&rsquo;agit pas d&rsquo;une fonction. Alors que dans ce cas particulier, cela peut \u00eatre \u00e9crit plus succinctement en ternaire, les expressions do sont beaucoup plus puissantes, permettant plusieurs d\u00e9clarations, par exemple\u00a0:<\/p>\n<pre><code>const res = do {\n    if (isCold( color)) {\n        'light-blue';\n    } else if (isHot( color)) {\n        'orange';\n    } else if (isRain( color)) {\n        'purple';\n    } else {\n        'green';\n    }\n};<\/code><\/pre>\n<p>L\u00e0 o\u00f9 cela est vraiment puissant, c&rsquo;est dans JSX, o\u00f9 nous pouvons le m\u00e9langer avec ses balises sans avoir \u00e0 calculer le r\u00e9sultat en externe au pr\u00e9alable. Par exemple, nous pourrions faire ce qui suit si nous <a href=\"https:\/\/startfunction.com\/tag\/react\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utilisions React<\/a> pour rendre ces composants\u00a0:<\/p>\n<pre><code>const MyComp = ({ color }) =&gt; ({\n            do {\n                if (isCold( color)) {\n                    ;\n                } else if (isHot( color)) {\n                    ;\n                } else if (isRain( color)) {\n                    ;\n                } else {\n                    ;\n                }\n            }\n        }\n\n);<\/code><\/pre>\n<h2>Plus de propositions JavaScript<\/h2>\n<p>De plus en plus de propositions sont discut\u00e9es chaque jour pour ajouter des fonctionnalit\u00e9s plus int\u00e9ressantes au langage JavaScript. Une liste sans cesse croissante de ces fonctionnalit\u00e9s JavaScript propos\u00e9es peut \u00eatre lue sur <a href=\"https:\/\/github.com\/tc39\/proposals#ecmascript-proposals\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/tc39\/proposals#ecmascript-proposals<\/a>. Les propositions ici sont presque termin\u00e9es et donc sur le point d&rsquo;\u00eatre ajout\u00e9es \u00e0 la norme ECMAScript, comme expliqu\u00e9 dans ce tableau qui d\u00e9crit <a href=\"https:\/\/tc39.es\/process-document\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le processus d&rsquo;acceptation<\/a>.<\/p>\n<p>Certaines des nouvelles fonctionnalit\u00e9s JavaScript que nous avons explor\u00e9es dans cet article, comme les expressions do ou l&rsquo;op\u00e9rateur de pipeline sont <a href=\"https:\/\/github.com\/tc39\/proposals\/blob\/master\/stage-1-proposals.md#stage-1-proposals\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">des propositions de l&rsquo;\u00e9tape 1<\/a>, ce qui signifie qu&rsquo;elles ont encore du chemin \u00e0 parcourir avant de faire partie de la norme ECMAScript.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez 5 nouvelles fonctionnalit\u00e9s, op\u00e9rateurs et expressions JavaScript qui am\u00e9lioreront votre code, le rendant plus lisible et efficace.<\/p>\n","protected":false},"author":1,"featured_media":157555,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,728,748,841],"tags":[1167],"class_list":["post-232239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-javascript-3","category-open-source-projektmanagement-2","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=232239"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/157555"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=232239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=232239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=232239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}