[{"data":1,"prerenderedAt":261},["ShallowReactive",2],{"term-g\u002Fgeneric":3,"related-g\u002Fgeneric":248},{"id":4,"title":5,"acronym":6,"body":7,"category":230,"description":231,"difficulty":232,"extension":233,"letter":234,"meta":235,"navigation":131,"path":236,"related":237,"seo":242,"sitemap":243,"stem":246,"subcategory":6,"__hash__":247},"terms\u002Fterms\u002Fg\u002Fgeneric.md","Generic",null,{"type":8,"value":9,"toc":224},"minimark",[10,15,19,23,31,35,213,217,220],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A generic is like a recipe that works for any ingredient. Instead of writing a 'sort apples' function AND a 'sort oranges' function, you write one 'sort anything' function and just tell it what you're sorting when you use it.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25,26,30],{},"Generics allow you to write reusable code that works with multiple types while preserving type safety. You define a function or class with a type parameter (like ",[27,28,29],"code",{},"T",") that gets filled in at usage time, avoiding the need for duplicated type-specific implementations.",[11,32,34],{"id":33},"show-me-the-code","Show Me The Code",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F TypeScript generic function\nfunction first\u003CT>(arr: T[]): T {\n  return arr[0];\n}\n\nfirst\u003Cnumber>([1, 2, 3]); \u002F\u002F returns number\nfirst\u003Cstring>([\"a\", \"b\"]); \u002F\u002F returns string\n","typescript","",[27,43,44,53,96,120,126,133,173],{"__ignoreMap":41},[45,46,49],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"sHwdD","\u002F\u002F TypeScript generic function\n",[45,54,56,60,64,68,71,74,78,81,84,88,91,93],{"class":47,"line":55},2,[45,57,59],{"class":58},"spNyl","function",[45,61,63],{"class":62},"s2Zo4"," first",[45,65,67],{"class":66},"sMK4o","\u003C",[45,69,29],{"class":70},"sBMFI",[45,72,73],{"class":66},">(",[45,75,77],{"class":76},"sHdIc","arr",[45,79,80],{"class":66},":",[45,82,83],{"class":70}," T",[45,85,87],{"class":86},"sTEyZ","[]",[45,89,90],{"class":66},"):",[45,92,83],{"class":70},[45,94,95],{"class":66}," {\n",[45,97,99,103,106,110,114,117],{"class":47,"line":98},3,[45,100,102],{"class":101},"s7zQu","  return",[45,104,105],{"class":86}," arr",[45,107,109],{"class":108},"swJcz","[",[45,111,113],{"class":112},"sbssI","0",[45,115,116],{"class":108},"]",[45,118,119],{"class":66},";\n",[45,121,123],{"class":47,"line":122},4,[45,124,125],{"class":66},"}\n",[45,127,129],{"class":47,"line":128},5,[45,130,132],{"emptyLinePlaceholder":131},true,"\n",[45,134,136,139,141,144,147,150,153,156,159,161,164,167,170],{"class":47,"line":135},6,[45,137,138],{"class":62},"first",[45,140,67],{"class":66},[45,142,143],{"class":70},"number",[45,145,146],{"class":66},">",[45,148,149],{"class":86},"([",[45,151,152],{"class":112},"1",[45,154,155],{"class":66},",",[45,157,158],{"class":112}," 2",[45,160,155],{"class":66},[45,162,163],{"class":112}," 3",[45,165,166],{"class":86},"])",[45,168,169],{"class":66},";",[45,171,172],{"class":51}," \u002F\u002F returns number\n",[45,174,176,178,180,183,185,187,190,194,196,198,201,204,206,208,210],{"class":47,"line":175},7,[45,177,138],{"class":62},[45,179,67],{"class":66},[45,181,182],{"class":70},"string",[45,184,146],{"class":66},[45,186,149],{"class":86},[45,188,189],{"class":66},"\"",[45,191,193],{"class":192},"sfazB","a",[45,195,189],{"class":66},[45,197,155],{"class":66},[45,199,200],{"class":66}," \"",[45,202,203],{"class":192},"b",[45,205,189],{"class":66},[45,207,166],{"class":86},[45,209,169],{"class":66},[45,211,212],{"class":51}," \u002F\u002F returns string\n",[11,214,216],{"id":215},"when-youll-hear-this","When You'll Hear This",[16,218,219],{},"\"Make that utility function generic so it works with any type.\" \u002F \"The API returns a generic response wrapper.\"",[221,222,223],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}",{"title":41,"searchDepth":55,"depth":55,"links":225},[226,227,228,229],{"id":13,"depth":55,"text":14},{"id":21,"depth":55,"text":22},{"id":33,"depth":55,"text":34},{"id":215,"depth":55,"text":216},"general","A generic is like a recipe that works for any ingredient.","intermediate","md","g",{},"\u002Fterms\u002Fg\u002Fgeneric",[238,239,240,241],"Interface","Type Inference","Dynamic Typing","OOP",{"title":5,"description":231},{"changefreq":244,"priority":245},"weekly",0.7,"terms\u002Fg\u002Fgeneric","JBcF6ubpjzzZ1FengBw1XAWi6os3nBnPhS-b5vFQYy0",[249,252,255,258],{"title":240,"path":250,"acronym":6,"category":230,"difficulty":232,"description":251},"\u002Fterms\u002Fd\u002Fdynamic-typing","Dynamic typing is like a box that can hold anything — toys, food, or a cat — and you don't have to label what goes in it ahead of time.",{"title":238,"path":253,"acronym":6,"category":230,"difficulty":232,"description":254},"\u002Fterms\u002Fi\u002Finterface","An interface is like a job description. It says 'whatever fills this role must be able to do X, Y, and Z' without caring how they do it.",{"title":241,"path":256,"acronym":241,"category":230,"difficulty":232,"description":257},"\u002Fterms\u002Fo\u002Foop","OOP is a way of organising code by modelling the world as objects — things that have properties (what they are) and methods (what they do).",{"title":239,"path":259,"acronym":6,"category":230,"difficulty":232,"description":260},"\u002Fterms\u002Ft\u002Ftype-inference","Type inference is the compiler being smart enough to figure out what type something is without you having to spell it out.",1776518283621]