[{"data":1,"prerenderedAt":1001},["ShallowReactive",2],{"page-\u002Fts":3,"pieces-ts":972,"autour-\u002Fts":986,"prerequis-\u002Fts":989,"plan-ts":990},{"id":4,"title":5,"body":6,"description":951,"extension":952,"ligne":87,"meta":953,"motsCles":954,"navigation":174,"niveau":962,"path":963,"prerequis":964,"ressources":964,"seo":965,"sources":966,"stem":970,"__hash__":971},"docs\u002Fts\u002Findex.md","TypeScript",{"type":7,"value":8,"toc":943},"minimark",[9,13,18,69,78,82,248,308,313,317,400,412,416,526,580,593,597,651,727,732,736,888,933,939],[10,11,12],"p",{},"Ce mémo résume les outils de TypeScript. Chaque section renvoie au cours qui l'explique en détail.",[14,15,17],"h2",{"id":16},"essayer-et-compiler","Essayer et compiler",[19,20,21,34],"table",{},[22,23,24],"thead",{},[25,26,27,31],"tr",{},[28,29,30],"th",{},"Besoin",[28,32,33],{},"Moyen",[35,36,37,49,59],"tbody",{},[25,38,39,43],{},[40,41,42],"td",{},"Essayer sans installer",[40,44,45],{},[46,47,48],"code",{},"typescriptlang.org\u002Fplay",[25,50,51,54],{},[40,52,53],{},"Installer dans un projet",[40,55,56],{},[46,57,58],{},"npm install typescript --save-dev",[25,60,61,64],{},[40,62,63],{},"Compiler un fichier",[40,65,66],{},[46,67,68],{},"npx tsc fichier.ts",[10,70,71,72,77],{},"Détails : ",[73,74,76],"a",{"href":75},"\u002Fts\u002Fpourquoi-typescript","Pourquoi TypeScript",".",[14,79,81],{"id":80},"types-de-base-et-fonctions","Types de base et fonctions",[83,84,89],"pre",{"className":85,"code":86,"language":87,"meta":88,"style":88},"language-ts shiki shiki-themes github-light-default github-dark-default github-dark-default","const nom: string = \"Gratin\"\nconst ingredients: string[] = [\"ail\", \"sel\"]\nlet personnes = 4 \u002F\u002F déduit : number\n\nfunction duree(prep: number, cuisson?: number): number {\n  return prep + (cuisson ?? 0)\n}\n","ts","",[46,90,91,117,151,169,176,218,242],{"__ignoreMap":88},[92,93,96,100,104,107,110,113],"span",{"class":94,"line":95},"line",1,[92,97,99],{"class":98},"sOnC1","const",[92,101,103],{"class":102},"s5iOY"," nom",[92,105,106],{"class":98},":",[92,108,109],{"class":102}," string",[92,111,112],{"class":98}," =",[92,114,116],{"class":115},"shWOn"," \"Gratin\"\n",[92,118,120,122,125,127,129,133,136,139,142,145,148],{"class":94,"line":119},2,[92,121,99],{"class":98},[92,123,124],{"class":102}," ingredients",[92,126,106],{"class":98},[92,128,109],{"class":102},[92,130,132],{"class":131},"scfrF","[] ",[92,134,135],{"class":98},"=",[92,137,138],{"class":131}," [",[92,140,141],{"class":115},"\"ail\"",[92,143,144],{"class":131},", ",[92,146,147],{"class":115},"\"sel\"",[92,149,150],{"class":131},"]\n",[92,152,154,157,160,162,165],{"class":94,"line":153},3,[92,155,156],{"class":98},"let",[92,158,159],{"class":131}," personnes ",[92,161,135],{"class":98},[92,163,164],{"class":102}," 4",[92,166,168],{"class":167},"sd6ml"," \u002F\u002F déduit : number\n",[92,170,172],{"class":94,"line":171},4,[92,173,175],{"emptyLinePlaceholder":174},true,"\n",[92,177,179,182,186,189,193,195,198,200,203,206,208,211,213,215],{"class":94,"line":178},5,[92,180,181],{"class":98},"function",[92,183,185],{"class":184},"syCW7"," duree",[92,187,188],{"class":131},"(",[92,190,192],{"class":191},"sIXEE","prep",[92,194,106],{"class":98},[92,196,197],{"class":102}," number",[92,199,144],{"class":131},[92,201,202],{"class":191},"cuisson",[92,204,205],{"class":98},"?:",[92,207,197],{"class":102},[92,209,210],{"class":131},")",[92,212,106],{"class":98},[92,214,197],{"class":102},[92,216,217],{"class":131}," {\n",[92,219,221,224,227,230,233,236,239],{"class":94,"line":220},6,[92,222,223],{"class":98},"  return",[92,225,226],{"class":131}," prep ",[92,228,229],{"class":98},"+",[92,231,232],{"class":131}," (cuisson ",[92,234,235],{"class":98},"??",[92,237,238],{"class":102}," 0",[92,240,241],{"class":131},")\n",[92,243,245],{"class":94,"line":244},7,[92,246,247],{"class":131},"}\n",[19,249,250,260],{},[22,251,252],{},[25,253,254,257],{},[28,255,256],{},"Type",[28,258,259],{},"Sens",[35,261,262,278,288,298],{},[25,263,264,275],{},[40,265,266,144,269,144,272],{},[46,267,268],{},"string",[46,270,271],{},"number",[46,273,274],{},"boolean",[40,276,277],{},"Texte, nombre, vrai ou faux",[25,279,280,285],{},[40,281,282],{},[46,283,284],{},"string[]",[40,286,287],{},"Tableau de textes",[25,289,290,295],{},[40,291,292],{},[46,293,294],{},"void",[40,296,297],{},"Fonction sans valeur renvoyée",[25,299,300,305],{},[40,301,302],{},[46,303,304],{},"any",[40,306,307],{},"Aucune vérification, à éviter",[10,309,71,310,77],{},[73,311,81],{"href":312},"\u002Fts\u002Ftypes-de-base",[14,314,316],{"id":315},"objets","Objets",[83,318,320],{"className":85,"code":319,"language":87,"meta":88,"style":88},"interface Recette {\n  readonly id: number\n  nom: string\n  duree?: number\n}\n\ntype Etendue = Recette & { date: string }\n",[46,321,322,332,345,355,364,368,372],{"__ignoreMap":88},[92,323,324,327,330],{"class":94,"line":95},[92,325,326],{"class":98},"interface",[92,328,329],{"class":191}," Recette",[92,331,217],{"class":131},[92,333,334,337,340,342],{"class":94,"line":119},[92,335,336],{"class":98},"  readonly",[92,338,339],{"class":191}," id",[92,341,106],{"class":98},[92,343,344],{"class":102}," number\n",[92,346,347,350,352],{"class":94,"line":153},[92,348,349],{"class":191},"  nom",[92,351,106],{"class":98},[92,353,354],{"class":102}," string\n",[92,356,357,360,362],{"class":94,"line":171},[92,358,359],{"class":191},"  duree",[92,361,205],{"class":98},[92,363,344],{"class":102},[92,365,366],{"class":94,"line":178},[92,367,247],{"class":131},[92,369,370],{"class":94,"line":220},[92,371,175],{"emptyLinePlaceholder":174},[92,373,374,377,380,382,384,387,390,393,395,397],{"class":94,"line":244},[92,375,376],{"class":98},"type",[92,378,379],{"class":191}," Etendue",[92,381,112],{"class":98},[92,383,329],{"class":191},[92,385,386],{"class":98}," &",[92,388,389],{"class":131}," { ",[92,391,392],{"class":191},"date",[92,394,106],{"class":98},[92,396,109],{"class":102},[92,398,399],{"class":131}," }\n",[10,401,402,404,405,407,408,77],{},[46,403,326],{}," par défaut, ",[46,406,376],{}," pour nommer une union. Détails : ",[73,409,411],{"href":410},"\u002Fts\u002Fobjets-interfaces-types","Objets, interface et type",[14,413,415],{"id":414},"unions-et-narrowing","Unions et narrowing",[83,417,419],{"className":85,"code":418,"language":87,"meta":88,"style":88},"type Difficulte = \"facile\" | \"moyen\" | \"difficile\"\n\nfunction afficher(valeur: number | string) {\n  if (typeof valeur === \"string\") return valeur.toUpperCase()\n  return valeur.toFixed(1)\n}\n",[46,420,421,444,448,471,506,522],{"__ignoreMap":88},[92,422,423,425,428,430,433,436,439,441],{"class":94,"line":95},[92,424,376],{"class":98},[92,426,427],{"class":191}," Difficulte",[92,429,112],{"class":98},[92,431,432],{"class":115}," \"facile\"",[92,434,435],{"class":98}," |",[92,437,438],{"class":115}," \"moyen\"",[92,440,435],{"class":98},[92,442,443],{"class":115}," \"difficile\"\n",[92,445,446],{"class":94,"line":119},[92,447,175],{"emptyLinePlaceholder":174},[92,449,450,452,455,457,460,462,464,466,468],{"class":94,"line":153},[92,451,181],{"class":98},[92,453,454],{"class":184}," afficher",[92,456,188],{"class":131},[92,458,459],{"class":191},"valeur",[92,461,106],{"class":98},[92,463,197],{"class":102},[92,465,435],{"class":98},[92,467,109],{"class":102},[92,469,470],{"class":131},") {\n",[92,472,473,476,479,482,485,488,491,494,497,500,503],{"class":94,"line":171},[92,474,475],{"class":98},"  if",[92,477,478],{"class":131}," (",[92,480,481],{"class":98},"typeof",[92,483,484],{"class":131}," valeur ",[92,486,487],{"class":98},"===",[92,489,490],{"class":115}," \"string\"",[92,492,493],{"class":131},") ",[92,495,496],{"class":98},"return",[92,498,499],{"class":131}," valeur.",[92,501,502],{"class":184},"toUpperCase",[92,504,505],{"class":131},"()\n",[92,507,508,510,512,515,517,520],{"class":94,"line":178},[92,509,223],{"class":98},[92,511,499],{"class":131},[92,513,514],{"class":184},"toFixed",[92,516,188],{"class":131},[92,518,519],{"class":102},"1",[92,521,241],{"class":131},[92,523,524],{"class":94,"line":220},[92,525,247],{"class":131},[19,527,528,538],{},[22,529,530],{},[25,531,532,535],{},[28,533,534],{},"Test",[28,536,537],{},"Sert à",[35,539,540,550,560,570],{},[25,541,542,547],{},[40,543,544],{},[46,545,546],{},"typeof x === \"string\"",[40,548,549],{},"Types de base",[25,551,552,557],{},[40,553,554],{},[46,555,556],{},"x instanceof Date",[40,558,559],{},"Objets d'une classe",[25,561,562,567],{},[40,563,564],{},[46,565,566],{},"\"cle\" in x",[40,568,569],{},"Propriété présente",[25,571,572,577],{},[40,573,574],{},[46,575,576],{},"etape.type === \"cuisson\"",[40,578,579],{},"Union discriminée",[10,581,582,585,586,588,589,77],{},[46,583,584],{},"unknown"," oblige à vérifier avant usage, ",[46,587,304],{}," ne vérifie rien. Détails : ",[73,590,592],{"href":591},"\u002Fts\u002Funions-et-narrowing","Unions, littéraux et narrowing",[14,594,596],{"id":595},"génériques-et-types-utilitaires","Génériques et types utilitaires",[83,598,600],{"className":85,"code":599,"language":87,"meta":88,"style":88},"function premier\u003CT>(liste: T[]): T {\n  return liste[0]\n}\n",[46,601,602,635,647],{"__ignoreMap":88},[92,603,604,606,609,612,615,618,621,623,626,629,631,633],{"class":94,"line":95},[92,605,181],{"class":98},[92,607,608],{"class":184}," premier",[92,610,611],{"class":131},"\u003C",[92,613,614],{"class":191},"T",[92,616,617],{"class":131},">(",[92,619,620],{"class":191},"liste",[92,622,106],{"class":98},[92,624,625],{"class":191}," T",[92,627,628],{"class":131},"[])",[92,630,106],{"class":98},[92,632,625],{"class":191},[92,634,217],{"class":131},[92,636,637,639,642,645],{"class":94,"line":119},[92,638,223],{"class":98},[92,640,641],{"class":131}," liste[",[92,643,644],{"class":102},"0",[92,646,150],{"class":131},[92,648,649],{"class":94,"line":153},[92,650,247],{"class":131},[19,652,653,662],{},[22,654,655],{},[25,656,657,659],{},[28,658,256],{},[28,660,661],{},"Effet",[35,663,664,674,684,694,704,714],{},[25,665,666,671],{},[40,667,668],{},[46,669,670],{},"Partial\u003CT>",[40,672,673],{},"Tout devient facultatif",[25,675,676,681],{},[40,677,678],{},[46,679,680],{},"Required\u003CT>",[40,682,683],{},"Tout devient obligatoire",[25,685,686,691],{},[40,687,688],{},[46,689,690],{},"Readonly\u003CT>",[40,692,693],{},"Tout passe en lecture seule",[25,695,696,701],{},[40,697,698],{},[46,699,700],{},"Pick\u003CT, \"a\" | \"b\">",[40,702,703],{},"Garde les clés listées",[25,705,706,711],{},[40,707,708],{},[46,709,710],{},"Omit\u003CT, \"a\">",[40,712,713],{},"Retire les clés listées",[25,715,716,721],{},[40,717,718],{},[46,719,720],{},"Record\u003CK, V>",[40,722,723,724],{},"Dictionnaire de clés ",[46,725,726],{},"K",[10,728,71,729,77],{},[73,730,596],{"href":731},"\u002Fts\u002Fgeneriques-et-utilitaires",[14,733,735],{"id":734},"vue-et-nuxt","Vue et Nuxt",[83,737,741],{"className":738,"code":739,"language":740,"meta":88,"style":88},"language-vue shiki shiki-themes github-light-default github-dark-default github-dark-default","\u003Cscript setup lang=\"ts\">\ninterface Props { titre: string; duree?: number }\nconst props = defineProps\u003CProps>()\nconst emit = defineEmits\u003C{ choisir: [id: number] }>()\nconst { data } = await useFetch\u003CRecette[]>('\u002Fapi\u002Frecettes')\n\u003C\u002Fscript>\n","vue",[46,742,743,765,793,813,846,879],{"__ignoreMap":88},[92,744,745,747,751,754,757,759,762],{"class":94,"line":95},[92,746,611],{"class":131},[92,748,750],{"class":749},"s5JFL","script",[92,752,753],{"class":102}," setup",[92,755,756],{"class":102}," lang",[92,758,135],{"class":131},[92,760,761],{"class":115},"\"ts\"",[92,763,764],{"class":131},">\n",[92,766,767,769,772,774,777,779,781,784,787,789,791],{"class":94,"line":119},[92,768,326],{"class":98},[92,770,771],{"class":191}," Props",[92,773,389],{"class":131},[92,775,776],{"class":191},"titre",[92,778,106],{"class":98},[92,780,109],{"class":102},[92,782,783],{"class":131},"; ",[92,785,786],{"class":191},"duree",[92,788,205],{"class":98},[92,790,197],{"class":102},[92,792,399],{"class":131},[92,794,795,797,800,802,805,807,810],{"class":94,"line":153},[92,796,99],{"class":98},[92,798,799],{"class":102}," props",[92,801,112],{"class":98},[92,803,804],{"class":184}," defineProps",[92,806,611],{"class":131},[92,808,809],{"class":191},"Props",[92,811,812],{"class":131},">()\n",[92,814,815,817,820,822,825,828,831,833,835,838,841,843],{"class":94,"line":171},[92,816,99],{"class":98},[92,818,819],{"class":102}," emit",[92,821,112],{"class":98},[92,823,824],{"class":184}," defineEmits",[92,826,827],{"class":131},"\u003C{ ",[92,829,830],{"class":191},"choisir",[92,832,106],{"class":98},[92,834,138],{"class":131},[92,836,837],{"class":191},"id",[92,839,840],{"class":131},": ",[92,842,271],{"class":102},[92,844,845],{"class":131},"] }>()\n",[92,847,848,850,852,855,858,860,863,866,868,871,874,877],{"class":94,"line":178},[92,849,99],{"class":98},[92,851,389],{"class":131},[92,853,854],{"class":102},"data",[92,856,857],{"class":131}," } ",[92,859,135],{"class":98},[92,861,862],{"class":98}," await",[92,864,865],{"class":184}," useFetch",[92,867,611],{"class":131},[92,869,870],{"class":191},"Recette",[92,872,873],{"class":131},"[]>(",[92,875,876],{"class":115},"'\u002Fapi\u002Frecettes'",[92,878,241],{"class":131},[92,880,881,884,886],{"class":94,"line":220},[92,882,883],{"class":131},"\u003C\u002F",[92,885,750],{"class":749},[92,887,764],{"class":131},[19,889,890,899],{},[22,891,892],{},[25,893,894,896],{},[28,895,30],{},[28,897,898],{},"Commande ou outil",[35,900,901,911,925],{},[25,902,903,906],{},[40,904,905],{},"Vérifier les types d'un projet Nuxt",[40,907,908],{},[46,909,910],{},"npx nuxt typecheck",[25,912,913,916],{},[40,914,915],{},"Dépendances de la vérification",[40,917,918,921,922],{},[46,919,920],{},"vue-tsc"," et ",[46,923,924],{},"typescript",[25,926,927,930],{},[40,928,929],{},"Éditeur",[40,931,932],{},"Extension Vue - Official",[10,934,71,935,77],{},[73,936,938],{"href":937},"\u002Fts\u002Ftypescript-dans-vue-et-nuxt","TypeScript dans Vue et Nuxt",[940,941,942],"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 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}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 .s5JFL, html code.shiki .s5JFL{--shiki-light:#116329;--shiki-default:#7EE787;--shiki-dark:#7EE787}",{"title":88,"searchDepth":119,"depth":153,"links":944},[945,946,947,948,949,950],{"id":16,"depth":119,"text":17},{"id":80,"depth":119,"text":81},{"id":315,"depth":119,"text":316},{"id":414,"depth":119,"text":415},{"id":595,"depth":119,"text":596},{"id":734,"depth":119,"text":735},"Le mémo de TypeScript : types de base, objets, unions, narrowing, génériques, types utilitaires et usage dans Vue et Nuxt.","md",{},[955,956,5,326,376,957,958,959,960,961],"mémo","aide-mémoire","union","narrowing","générique","Partial","defineProps","memo","\u002Fts",null,{"title":5,"description":951},[967],{"nom":968,"url":969},"Documentation de TypeScript (en anglais)","https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002F","ts\u002Findex","hHip71sXB_yTwwt6R5pTz_-rf7WSqwR9tVIV3kBiRg0",[973,975,977,979,981,983,985],{"path":75,"title":76,"stem":974},"ts\u002F01.pourquoi-typescript",{"path":312,"title":81,"stem":976},"ts\u002F02.types-de-base",{"path":410,"title":411,"stem":978},"ts\u002F03.objets-interfaces-types",{"path":591,"title":592,"stem":980},"ts\u002F04.unions-et-narrowing",{"path":731,"title":596,"stem":982},"ts\u002F05.generiques-et-utilitaires",{"path":937,"title":938,"stem":984},"ts\u002F06.typescript-dans-vue-et-nuxt",{"path":963,"title":5,"stem":970},[964,987],{"title":76,"path":75,"stem":974,"description":988,"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.",[],[991,993,994,995,997,998,1000],{"path":75,"title":76,"niveau":992,"stem":974},"debutant",{"path":312,"title":81,"niveau":992,"stem":976},{"path":410,"title":411,"niveau":992,"stem":978},{"path":591,"title":592,"niveau":996,"stem":980},"intermediaire",{"path":731,"title":596,"niveau":996,"stem":982},{"path":937,"title":938,"niveau":999,"stem":984},"avance",{"path":963,"title":5,"niveau":962,"stem":970},1794583429397]