[{"data":1,"prerenderedAt":1036},["ShallowReactive",2],{"page-\u002Fts\u002Ftypes-de-base":3,"pieces-ts":993,"autour-\u002Fts\u002Ftypes-de-base":1018,"prerequis-\u002Fts\u002Ftypes-de-base":1023,"plan-ts":1025},{"id":4,"title":5,"body":6,"description":963,"extension":964,"ligne":52,"meta":965,"motsCles":966,"navigation":288,"niveau":971,"path":972,"prerequis":973,"ressources":975,"seo":984,"sources":985,"stem":991,"__hash__":992},"docs\u002Fts\u002F02.types-de-base.md","Types de base et fonctions",{"type":7,"value":8,"toc":950},"minimark",[9,14,39,43,47,118,126,145,152,156,163,237,247,251,257,305,314,317,321,324,376,379,406,410,413,517,524,530,534,537,588,595,599,602,701,711,714,753,757,763,815,820,830,834,839,875,892,904,908,946],[10,11,13],"h2",{"id":12},"ce-que-tu-vas-apprendre","Ce que tu vas apprendre",[15,16,17,33,36],"ul",{},[18,19,20,21,25,26,25,29,32],"li",{},"Annoter une variable avec ",[22,23,24],"code",{},"string",", ",[22,27,28],{},"number",[22,30,31],{},"boolean"," et les tableaux.",[18,34,35],{},"Laisser TypeScript deviner le type grâce à l'inférence.",[18,37,38],{},"Typer les paramètres et le retour d'une fonction.",[10,40,42],{"id":41},"annoter-une-variable","Annoter une variable",[44,45,46],"p",{},"Voici trois variables pour une recette.",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-ts shiki shiki-themes github-light-default github-dark-default github-dark-default","const nom: string = \"Gratin dauphinois\"\nconst personnes: number = 4\nconst vegetarien: boolean = false\n","ts","",[22,55,56,82,100],{"__ignoreMap":53},[57,58,61,65,69,72,75,78],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"sOnC1","const",[57,66,68],{"class":67},"s5iOY"," nom",[57,70,71],{"class":63},":",[57,73,74],{"class":67}," string",[57,76,77],{"class":63}," =",[57,79,81],{"class":80},"shWOn"," \"Gratin dauphinois\"\n",[57,83,85,87,90,92,95,97],{"class":59,"line":84},2,[57,86,64],{"class":63},[57,88,89],{"class":67}," personnes",[57,91,71],{"class":63},[57,93,94],{"class":67}," number",[57,96,77],{"class":63},[57,98,99],{"class":67}," 4\n",[57,101,103,105,108,110,113,115],{"class":59,"line":102},3,[57,104,64],{"class":63},[57,106,107],{"class":67}," vegetarien",[57,109,71],{"class":63},[57,111,112],{"class":67}," boolean",[57,114,77],{"class":63},[57,116,117],{"class":67}," false\n",[44,119,120,121,125],{},"Après les deux-points, tu écris le type. Une telle mention s'appelle une ",[122,123,124],"strong",{},"annotation de type",".",[44,127,128,129,131,132,134,135,137,138,141,142,125],{},"Les trois types de base sont ",[22,130,24],{}," pour le texte, ",[22,133,28],{}," pour tous les nombres (entiers ou décimaux) et ",[22,136,31],{}," pour ",[22,139,140],{},"true"," ou ",[22,143,144],{},"false",[44,146,147,148,151],{},"Les types s'écrivent en minuscules. ",[22,149,150],{},"String"," avec une majuscule existe aussi, mais ce n'est pas celui qu'on utilise.",[10,153,155],{"id":154},"les-tableaux","Les tableaux",[44,157,158,159,162],{},"Pour une liste de valeurs du même type, ajoute ",[22,160,161],{},"[]"," après le type.",[48,164,166],{"className":50,"code":165,"language":52,"meta":53,"style":53},"const ingredients: string[] = [\"pommes de terre\", \"crème\", \"ail\"]\nconst notes: number[] = [4, 5, 3]\n",[22,167,168,205],{"__ignoreMap":53},[57,169,170,172,175,177,179,183,186,189,192,194,197,199,202],{"class":59,"line":60},[57,171,64],{"class":63},[57,173,174],{"class":67}," ingredients",[57,176,71],{"class":63},[57,178,74],{"class":67},[57,180,182],{"class":181},"scfrF","[] ",[57,184,185],{"class":63},"=",[57,187,188],{"class":181}," [",[57,190,191],{"class":80},"\"pommes de terre\"",[57,193,25],{"class":181},[57,195,196],{"class":80},"\"crème\"",[57,198,25],{"class":181},[57,200,201],{"class":80},"\"ail\"",[57,203,204],{"class":181},"]\n",[57,206,207,209,212,214,216,218,220,222,225,227,230,232,235],{"class":59,"line":84},[57,208,64],{"class":63},[57,210,211],{"class":67}," notes",[57,213,71],{"class":63},[57,215,94],{"class":67},[57,217,182],{"class":181},[57,219,185],{"class":63},[57,221,188],{"class":181},[57,223,224],{"class":67},"4",[57,226,25],{"class":181},[57,228,229],{"class":67},"5",[57,231,25],{"class":181},[57,233,234],{"class":67},"3",[57,236,204],{"class":181},[44,238,239,242,243,246],{},[22,240,241],{},"string[]"," se lit « un tableau de textes ». Si tu essaies d'ajouter un nombre à ",[22,244,245],{},"ingredients",", TypeScript refuse.",[10,248,250],{"id":249},"linférence-typescript-devine","L'inférence : TypeScript devine",[44,252,253,254,125],{},"Tu n'as pas besoin d'annoter chaque variable. Quand tu donnes une valeur de départ, TypeScript en déduit le type. C'est l'",[122,255,256],{},"inférence de type",[48,258,260],{"className":50,"code":259,"language":52,"meta":53,"style":53},"const nom = \"Gratin dauphinois\"\nlet personnes = 4\n\npersonnes = \"six\" \u002F\u002F Erreur\n",[22,261,262,272,284,290],{"__ignoreMap":53},[57,263,264,266,268,270],{"class":59,"line":60},[57,265,64],{"class":63},[57,267,68],{"class":67},[57,269,77],{"class":63},[57,271,81],{"class":80},[57,273,274,277,280,282],{"class":59,"line":84},[57,275,276],{"class":63},"let",[57,278,279],{"class":181}," personnes ",[57,281,185],{"class":63},[57,283,99],{"class":67},[57,285,286],{"class":59,"line":102},[57,287,289],{"emptyLinePlaceholder":288},true,"\n",[57,291,293,296,298,301],{"class":59,"line":292},4,[57,294,295],{"class":181},"personnes ",[57,297,185],{"class":63},[57,299,300],{"class":80}," \"six\"",[57,302,304],{"class":303},"sd6ml"," \u002F\u002F Erreur\n",[44,306,307,310,311,313],{},[22,308,309],{},"personnes"," est devenu un ",[22,312,28],{}," dès sa création. L'affectation d'un texte est donc refusée.",[44,315,316],{},"Passe la souris sur un nom dans ton éditeur : le type déduit s'affiche.",[10,318,320],{"id":319},"annoter-ou-laisser-deviner","Annoter ou laisser deviner",[44,322,323],{},"Une règle simple pour débuter :",[325,326,327,340],"table",{},[328,329,330],"thead",{},[331,332,333,337],"tr",{},[334,335,336],"th",{},"Situation",[334,338,339],{},"Que faire",[341,342,343,352,360,368],"tbody",{},[331,344,345,349],{},[346,347,348],"td",{},"Variable avec une valeur de départ",[346,350,351],{},"Laisser l'inférence",[331,353,354,357],{},[346,355,356],{},"Variable déclarée sans valeur",[346,358,359],{},"Annoter",[331,361,362,365],{},[346,363,364],{},"Paramètre de fonction",[346,366,367],{},"Toujours annoter",[331,369,370,373],{},[346,371,372],{},"Retour de fonction",[346,374,375],{},"Annoter si la fonction est publique ou longue",[44,377,378],{},"Un code trop annoté devient pénible à lire. Annote là où TypeScript ne peut pas deviner.",[48,380,382],{"className":50,"code":381,"language":52,"meta":53,"style":53},"let titre: string\ntitre = \"Tarte aux pommes\"\n",[22,383,384,396],{"__ignoreMap":53},[57,385,386,388,391,393],{"class":59,"line":60},[57,387,276],{"class":63},[57,389,390],{"class":181}," titre",[57,392,71],{"class":63},[57,394,395],{"class":67}," string\n",[57,397,398,401,403],{"class":59,"line":84},[57,399,400],{"class":181},"titre ",[57,402,185],{"class":63},[57,404,405],{"class":80}," \"Tarte aux pommes\"\n",[10,407,409],{"id":408},"typer-une-fonction","Typer une fonction",[44,411,412],{},"Les paramètres se typent un par un. Le type de retour se place après les parenthèses.",[48,414,416],{"className":50,"code":415,"language":52,"meta":53,"style":53},"function duree(preparation: number, cuisson: number): number {\n  return preparation + cuisson\n}\n\nduree(15, 45) \u002F\u002F 60\nduree(15)     \u002F\u002F Erreur : il manque un argument\n",[22,417,418,457,471,476,480,502],{"__ignoreMap":53},[57,419,420,423,427,430,434,436,438,440,443,445,447,450,452,454],{"class":59,"line":60},[57,421,422],{"class":63},"function",[57,424,426],{"class":425},"syCW7"," duree",[57,428,429],{"class":181},"(",[57,431,433],{"class":432},"sIXEE","preparation",[57,435,71],{"class":63},[57,437,94],{"class":67},[57,439,25],{"class":181},[57,441,442],{"class":432},"cuisson",[57,444,71],{"class":63},[57,446,94],{"class":67},[57,448,449],{"class":181},")",[57,451,71],{"class":63},[57,453,94],{"class":67},[57,455,456],{"class":181}," {\n",[57,458,459,462,465,468],{"class":59,"line":84},[57,460,461],{"class":63},"  return",[57,463,464],{"class":181}," preparation ",[57,466,467],{"class":63},"+",[57,469,470],{"class":181}," cuisson\n",[57,472,473],{"class":59,"line":102},[57,474,475],{"class":181},"}\n",[57,477,478],{"class":59,"line":292},[57,479,289],{"emptyLinePlaceholder":288},[57,481,483,486,488,491,493,496,499],{"class":59,"line":482},5,[57,484,485],{"class":425},"duree",[57,487,429],{"class":181},[57,489,490],{"class":67},"15",[57,492,25],{"class":181},[57,494,495],{"class":67},"45",[57,497,498],{"class":181},") ",[57,500,501],{"class":303},"\u002F\u002F 60\n",[57,503,505,507,509,511,514],{"class":59,"line":504},6,[57,506,485],{"class":425},[57,508,429],{"class":181},[57,510,490],{"class":67},[57,512,513],{"class":181},")     ",[57,515,516],{"class":303},"\u002F\u002F Erreur : il manque un argument\n",[44,518,519,520,523],{},"TypeScript vérifie le nombre d'arguments et leur type. En JavaScript, un argument oublié donnerait ",[22,521,522],{},"NaN"," sans prévenir.",[44,525,526,527,125],{},"Le type de retour peut souvent être omis : TypeScript le déduit de l'instruction ",[22,528,529],{},"return",[10,531,533],{"id":532},"les-fonctions-fléchées","Les fonctions fléchées",[44,535,536],{},"La syntaxe est la même pour une fonction fléchée.",[48,538,540],{"className":50,"code":539,"language":52,"meta":53,"style":53},"const prixParPart = (prix: number, parts: number): number => prix \u002F parts\n",[22,541,542],{"__ignoreMap":53},[57,543,544,546,549,551,554,557,559,561,563,566,568,570,572,574,576,579,582,585],{"class":59,"line":60},[57,545,64],{"class":63},[57,547,548],{"class":425}," prixParPart",[57,550,77],{"class":63},[57,552,553],{"class":181}," (",[57,555,556],{"class":432},"prix",[57,558,71],{"class":63},[57,560,94],{"class":67},[57,562,25],{"class":181},[57,564,565],{"class":432},"parts",[57,567,71],{"class":63},[57,569,94],{"class":67},[57,571,449],{"class":181},[57,573,71],{"class":63},[57,575,94],{"class":67},[57,577,578],{"class":63}," =>",[57,580,581],{"class":181}," prix ",[57,583,584],{"class":63},"\u002F",[57,586,587],{"class":181}," parts\n",[44,589,590,591,594],{},"Chaque paramètre garde son annotation entre les parenthèses. Le ",[22,592,593],{},": number"," avant la flèche est le type de retour.",[10,596,598],{"id":597},"paramètre-optionnel-et-valeur-par-défaut","Paramètre optionnel et valeur par défaut",[44,600,601],{},"Un point d'interrogation rend un paramètre facultatif.",[48,603,605],{"className":50,"code":604,"language":52,"meta":53,"style":53},"function saluer(nom: string, titre?: string) {\n  return titre ? `${titre} ${nom}` : nom\n}\n\nsaluer(\"Marie\")\nsaluer(\"Marie\", \"Chef\")\n",[22,606,607,636,665,669,673,686],{"__ignoreMap":53},[57,608,609,611,614,616,619,621,623,625,628,631,633],{"class":59,"line":60},[57,610,422],{"class":63},[57,612,613],{"class":425}," saluer",[57,615,429],{"class":181},[57,617,618],{"class":432},"nom",[57,620,71],{"class":63},[57,622,74],{"class":67},[57,624,25],{"class":181},[57,626,627],{"class":432},"titre",[57,629,630],{"class":63},"?:",[57,632,74],{"class":67},[57,634,635],{"class":181},") {\n",[57,637,638,640,643,646,649,651,654,656,659,662],{"class":59,"line":84},[57,639,461],{"class":63},[57,641,642],{"class":181}," titre ",[57,644,645],{"class":63},"?",[57,647,648],{"class":80}," `${",[57,650,627],{"class":181},[57,652,653],{"class":80},"} ${",[57,655,618],{"class":181},[57,657,658],{"class":80},"}`",[57,660,661],{"class":63}," :",[57,663,664],{"class":181}," nom\n",[57,666,667],{"class":59,"line":102},[57,668,475],{"class":181},[57,670,671],{"class":59,"line":292},[57,672,289],{"emptyLinePlaceholder":288},[57,674,675,678,680,683],{"class":59,"line":482},[57,676,677],{"class":425},"saluer",[57,679,429],{"class":181},[57,681,682],{"class":80},"\"Marie\"",[57,684,685],{"class":181},")\n",[57,687,688,690,692,694,696,699],{"class":59,"line":504},[57,689,677],{"class":425},[57,691,429],{"class":181},[57,693,682],{"class":80},[57,695,25],{"class":181},[57,697,698],{"class":80},"\"Chef\"",[57,700,685],{"class":181},[44,702,703,704,706,707,710],{},"Dans la fonction, ",[22,705,627],{}," vaut ",[22,708,709],{},"string | undefined",". On reviendra sur cette notation avec les unions.",[44,712,713],{},"Une valeur par défaut est plus simple. Le type est alors déduit :",[48,715,717],{"className":50,"code":716,"language":52,"meta":53,"style":53},"function portions(personnes = 4) {\n  return personnes * 150\n}\n",[22,718,719,737,749],{"__ignoreMap":53},[57,720,721,723,726,728,730,732,735],{"class":59,"line":60},[57,722,422],{"class":63},[57,724,725],{"class":425}," portions",[57,727,429],{"class":181},[57,729,309],{"class":432},[57,731,77],{"class":63},[57,733,734],{"class":67}," 4",[57,736,635],{"class":181},[57,738,739,741,743,746],{"class":59,"line":84},[57,740,461],{"class":63},[57,742,279],{"class":181},[57,744,745],{"class":63},"*",[57,747,748],{"class":67}," 150\n",[57,750,751],{"class":59,"line":102},[57,752,475],{"class":181},[10,754,756],{"id":755},"quand-la-fonction-ne-renvoie-rien","Quand la fonction ne renvoie rien",[44,758,759,760,125],{},"Une fonction qui affiche quelque chose sans rien renvoyer a pour type de retour ",[22,761,762],{},"void",[48,764,766],{"className":50,"code":765,"language":52,"meta":53,"style":53},"function afficherRecette(nom: string): void {\n  console.log(`Recette : ${nom}`)\n}\n",[22,767,768,792,811],{"__ignoreMap":53},[57,769,770,772,775,777,779,781,783,785,787,790],{"class":59,"line":60},[57,771,422],{"class":63},[57,773,774],{"class":425}," afficherRecette",[57,776,429],{"class":181},[57,778,618],{"class":432},[57,780,71],{"class":63},[57,782,74],{"class":67},[57,784,449],{"class":181},[57,786,71],{"class":63},[57,788,789],{"class":67}," void",[57,791,456],{"class":181},[57,793,794,797,800,802,805,807,809],{"class":59,"line":84},[57,795,796],{"class":181},"  console.",[57,798,799],{"class":425},"log",[57,801,429],{"class":181},[57,803,804],{"class":80},"`Recette : ${",[57,806,618],{"class":181},[57,808,658],{"class":80},[57,810,685],{"class":181},[57,812,813],{"class":59,"line":102},[57,814,475],{"class":181},[44,816,817,819],{},[22,818,762],{}," signifie « pas de valeur utile ». Là encore, tu peux l'omettre : TypeScript le déduit.",[821,822,823],"note",{},[44,824,825,826,829],{},"Dans les paramètres d'une fonction, TypeScript n'infère pas le type depuis l'extérieur. Sans annotation, il le considère comme ",[22,827,828],{},"any",", c'est-à-dire sans contrôle. Tu verras plus bas comment l'interdire.",[10,831,833],{"id":832},"le-piège-de-any","Le piège de any",[44,835,836,838],{},[22,837,828],{}," désigne un type qui désactive toute vérification. Avec lui, tu retrouves le comportement de JavaScript.",[48,840,842],{"className":50,"code":841,"language":52,"meta":53,"style":53},"let valeur: any = \"texte\"\nvaleur.nimporteQuoi() \u002F\u002F Aucune erreur, plantage à l'exécution\n",[22,843,844,861],{"__ignoreMap":53},[57,845,846,848,851,853,856,858],{"class":59,"line":60},[57,847,276],{"class":63},[57,849,850],{"class":181}," valeur",[57,852,71],{"class":63},[57,854,855],{"class":67}," any",[57,857,77],{"class":63},[57,859,860],{"class":80}," \"texte\"\n",[57,862,863,866,869,872],{"class":59,"line":84},[57,864,865],{"class":181},"valeur.",[57,867,868],{"class":425},"nimporteQuoi",[57,870,871],{"class":181},"() ",[57,873,874],{"class":303},"\u002F\u002F Aucune erreur, plantage à l'exécution\n",[44,876,877,878,881,882,884,885,887,888,891],{},"La documentation recommande d'activer l'option ",[22,879,880],{},"noImplicitAny"," dans la configuration, qui transforme chaque ",[22,883,828],{}," involontaire en erreur. Évite ",[22,886,828],{}," : un meilleur outil, ",[22,889,890],{},"unknown",", arrive dans un prochain cours.",[893,894,895],"warning",{},[44,896,897,898,900,901,903],{},"Un seul ",[22,899,828],{}," peut contaminer le code qui l'entoure. Une valeur calculée à partir d'un ",[22,902,828],{}," devient elle aussi non vérifiée.",[10,905,907],{"id":906},"à-retenir","À retenir",[15,909,910,921,926,929,932,940],{},[18,911,912,913,25,915,917,918,920],{},"Les types de base sont ",[22,914,24],{},[22,916,28],{}," et ",[22,919,31],{},", écrits en minuscules.",[18,922,923,925],{},[22,924,241],{}," désigne un tableau de textes.",[18,927,928],{},"L'inférence déduit le type d'une variable initialisée : inutile de tout annoter.",[18,930,931],{},"Les paramètres de fonction s'annotent toujours ; le retour peut être déduit.",[18,933,934,936,937,939],{},[22,935,645],{}," rend un paramètre facultatif, ",[22,938,762],{}," indique l'absence de valeur renvoyée.",[18,941,942,943,945],{},"Évite ",[22,944,828],{}," : il désactive la vérification.",[947,948,949],"style",{},"html pre.shiki code .sOnC1, html code.shiki .sOnC1{--shiki-light:#CF222E;--shiki-default:#FF7B72;--shiki-dark:#FF7B72}html pre.shiki code .s5iOY, html code.shiki .s5iOY{--shiki-light:#0550AE;--shiki-default:#79C0FF;--shiki-dark:#79C0FF}html pre.shiki code .shWOn, html code.shiki .shWOn{--shiki-light:#0A3069;--shiki-default:#A5D6FF;--shiki-dark:#A5D6FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .scfrF, html code.shiki .scfrF{--shiki-light:#1F2328;--shiki-default:#E6EDF3;--shiki-dark:#E6EDF3}html pre.shiki code .sd6ml, html code.shiki .sd6ml{--shiki-light:#6E7781;--shiki-default:#8B949E;--shiki-dark:#8B949E}html pre.shiki code .syCW7, html code.shiki .syCW7{--shiki-light:#8250DF;--shiki-default:#D2A8FF;--shiki-dark:#D2A8FF}html pre.shiki code .sIXEE, html code.shiki .sIXEE{--shiki-light:#953800;--shiki-default:#FFA657;--shiki-dark:#FFA657}",{"title":53,"searchDepth":84,"depth":102,"links":951},[952,953,954,955,956,957,958,959,960,961,962],{"id":12,"depth":84,"text":13},{"id":41,"depth":84,"text":42},{"id":154,"depth":84,"text":155},{"id":249,"depth":84,"text":250},{"id":319,"depth":84,"text":320},{"id":408,"depth":84,"text":409},{"id":532,"depth":84,"text":533},{"id":597,"depth":84,"text":598},{"id":755,"depth":84,"text":756},{"id":832,"depth":84,"text":833},{"id":906,"depth":84,"text":907},"Annote des variables avec string, number et boolean, laisse l'inférence travailler, puis type les paramètres et les retours de tes fonctions.","md",{},[24,28,31,967,124,968,969,970,762],"inférence","tableau","paramètre optionnel","type de retour","debutant","\u002Fts\u002Ftypes-de-base",[974],"\u002Fts\u002Fpourquoi-typescript",[976,980],{"nom":977,"url":978,"type":979},"Grafikart, formation TypeScript","https:\u002F\u002Fgrafikart.fr\u002Fformations\u002Ftypescript","cours",{"nom":981,"url":982,"type":983,"anglais":288},"Les types courants (en anglais)","https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002F2\u002Feveryday-types.html","doc",{"title":5,"description":963},[986,988],{"nom":987,"url":982},"Les types courants, documentation de TypeScript (en anglais)",{"nom":989,"url":990},"Les fonctions, documentation de TypeScript (en anglais)","https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002F2\u002Ffunctions.html","ts\u002F02.types-de-base","yPfa9bwxtLQOXU9tAB7LUN04e6K1wZW1Bsukkvq6VpU",[994,997,998,1002,1006,1010,1014],{"path":974,"title":995,"stem":996},"Pourquoi TypeScript","ts\u002F01.pourquoi-typescript",{"path":972,"title":5,"stem":991},{"path":999,"title":1000,"stem":1001},"\u002Fts\u002Fobjets-interfaces-types","Objets, interface et type","ts\u002F03.objets-interfaces-types",{"path":1003,"title":1004,"stem":1005},"\u002Fts\u002Funions-et-narrowing","Unions, littéraux et narrowing","ts\u002F04.unions-et-narrowing",{"path":1007,"title":1008,"stem":1009},"\u002Fts\u002Fgeneriques-et-utilitaires","Génériques et types utilitaires","ts\u002F05.generiques-et-utilitaires",{"path":1011,"title":1012,"stem":1013},"\u002Fts\u002Ftypescript-dans-vue-et-nuxt","TypeScript dans Vue et Nuxt","ts\u002F06.typescript-dans-vue-et-nuxt",{"path":1015,"title":1016,"stem":1017},"\u002Fts","TypeScript","ts\u002Findex",[1019,1021],{"title":995,"path":974,"stem":996,"description":1020,"children":-1},"Découvre ce que TypeScript ajoute à JavaScript, comment l'essayer dans le playground et avec tsc, et comment lire une erreur de type.",{"title":1000,"path":999,"stem":1001,"description":1022,"children":-1},"Décris la forme d'un objet avec un type objet, une interface ou un alias de type, puis choisis entre les deux.",[1024],{"path":974,"title":995,"ligne":52},[1026,1027,1028,1029,1031,1032,1034],{"path":974,"title":995,"niveau":971,"stem":996},{"path":972,"title":5,"niveau":971,"stem":991},{"path":999,"title":1000,"niveau":971,"stem":1001},{"path":1003,"title":1004,"niveau":1030,"stem":1005},"intermediaire",{"path":1007,"title":1008,"niveau":1030,"stem":1009},{"path":1011,"title":1012,"niveau":1033,"stem":1013},"avance",{"path":1015,"title":1016,"niveau":1035,"stem":1017},"memo",1794583433546]