{"id":3248,"date":"2020-07-13T08:52:00","date_gmt":"2020-07-13T08:52:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/generics-in-typescript\/"},"modified":"2026-04-24T11:39:03","modified_gmt":"2026-04-24T11:39:03","slug":"genericos-en-typescript","status":"publish","type":"post","link":"https:\/\/thecodest.co\/es\/blog\/generics-in-typescript\/","title":{"rendered":"Gen\u00e9ricos en TypeScript"},"content":{"rendered":"<p>Los gen\u00e9ricos pueden utilizarse junto con funciones (creaci\u00f3n de funci\u00f3n gen\u00e9rica), clases (creaci\u00f3n de clase gen\u00e9rica) e interfaces (creaci\u00f3n de interfaz gen\u00e9rica).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uso b\u00e1sico<\/h2>\n\n\n\n<p>Probablemente hayas utilizado gen\u00e9ricos en el pasado incluso sin saberlo - el uso m\u00e1s com\u00fan de gen\u00e9ricos es declarar un array:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const miMatriz: cadena[];<\/code><\/pre>\n\n\n\n<p>No es demasiado especial a primera vista, s\u00f3lo declaramos <code>miMatriz<\/code> como una matriz de cadenas, pero es lo mismo que una declaraci\u00f3n gen\u00e9rica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const myArray: Array;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mantener las cosas expl\u00edcitas<\/h2>\n\n\n\n<p>Empecemos con un ejemplo muy sencillo: \u00bfc\u00f3mo podr\u00edamos portar esta vainilla <a href=\"https:\/\/thecodest.co\/es\/blog\/hire-vue-js-developers\/\">JS<\/a> para <a href=\"https:\/\/thecodest.co\/es\/dictionary\/typescript-developer\/\">TypeScript<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getPrefiledArray(relleno, longitud) {\n    return (new Array(length)).fill(filler);\n}<\/code><\/pre>\n\n\n\n<p>Esta funci\u00f3n devolver\u00e1 un array lleno con la cantidad dada de <code>relleno<\/code>As\u00ed que <code>longitud<\/code> ser\u00e1 <code>n\u00famero<\/code> y la funci\u00f3n completa devolver\u00e1 un array de <code>relleno<\/code> - pero, \u00bfqu\u00e9 es el relleno? En este punto puede ser cualquier cosa, as\u00ed que una opci\u00f3n es utilizar <code>cualquier<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getPrefiledArray(filler: any, length: number): any[] {\n    return (new Array(length)).fill(filler);\n}<\/code><\/pre>\n\n\n\n<p>Utilizando <code>cualquier<\/code> es ciertamente gen\u00e9rico - podemos pasar literalmente cualquier cosa, por lo que \"trabajar con un n\u00famero de tipos en lugar de un \u00fanico tipo\" de la definici\u00f3n est\u00e1 totalmente cubierto, pero perdemos la conexi\u00f3n entre <code>relleno<\/code> y el tipo de retorno. En este caso, queremos devolver alguna cosa com\u00fan, y podemos definir expl\u00edcitamente esta cosa com\u00fan como <strong>par\u00e1metro de tipo<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getPrefiledArray(relleno: T, longitud: n\u00famero): T[] {\n    return (new Array(length)).fill(filler);\n}<\/code><\/pre>\n\n\n\n<p>y usarlo as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const prefilledArray = getPrefiledArray(0, 10);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Restricciones gen\u00e9ricas<\/h2>\n\n\n\n<p>Veamos otros casos, probablemente m\u00e1s comunes. \u00bfPor qu\u00e9 usamos tipos en las funciones? Para m\u00ed, es para asegurar que los argumentos pasados a la funci\u00f3n tendr\u00e1n algunas propiedades con las que quiero interactuar.<\/p>\n\n\n\n<p>Una vez m\u00e1s vamos a intentar portar una simple funci\u00f3n vanilla JS a TS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getLength(cosa) {\n    return cosa.longitud;\n}<\/code><\/pre>\n\n\n\n<p>Tenemos un enigma no trivial: \u00bfc\u00f3mo garantizar que la cosa tiene un <code>longitud<\/code> propiedad, y el primer pensamiento puede ser hacer algo como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getLength(cosa: typeof Array):number {\n    return cosa.longitud;\n}<\/code><\/pre>\n\n\n\n<p>y dependiendo del contexto puede ser correcto, en general somos un poco gen\u00e9ricos - funcionar\u00e1 con arrays de m\u00faltiples tipos, pero \u00bfqu\u00e9 pasa si no sabemos realmente si la cosa debe ser siempre un array - tal vez la cosa es un campo de f\u00fatbol o una c\u00e1scara de pl\u00e1tano? En este caso, tenemos que recoger las propiedades comunes de esa cosa en una construcci\u00f3n que puede definir las propiedades de un objeto - una interfaz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">interfaz IThingWithLength {\n  longitud: n\u00famero;\n}<\/code><\/pre>\n\n\n\n<p>Podemos utilizar <code>IThingWithLength<\/code> como tipo de la interfaz <code>cosa<\/code> par\u00e1metro:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getLength(cosa: ITCosaConLongitud):number {\n    return cosa.longitud;\n}<\/code><\/pre>\n\n\n\n<p>francamente en este sencillo ejemplo, estar\u00e1 perfectamente bien, pero si queremos mantener este tipo gen\u00e9rico, y no enfrentarnos al problema del primer ejemplo podemos usar <strong>Restricciones gen\u00e9ricas<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">function getLength(cosa: T):number {\n    return cosa.longitud;\n}<\/code><\/pre>\n\n\n\n<p>y \u00fasalo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">interfaz IBananaPeel {\n  grosor: n\u00famero;\n  longitud: n\u00famero;\n}\n\nconst bananaPeel: IBananaPeel = {espesor: 0.2, longitud: 3.14};\ngetLength(bananaPeel);<\/code><\/pre>\n\n\n\n<p>Utilizando <code>extiende<\/code> garantiza que <code>T<\/code> contendr\u00e1 propiedades definidas por <code>IThingWithLength<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clases gen\u00e9ricas<\/h2>\n\n\n\n<p>Hasta este punto, est\u00e1bamos trabajando con funciones gen\u00e9ricas, pero no es el \u00fanico lugar donde brillan los gen\u00e9ricos, veamos c\u00f3mo podemos incorporarlos a las clases.<\/p>\n\n\n\n<p>En primer lugar vamos a tratar de almacenar racimo de pl\u00e1tanos en la cesta de pl\u00e1tanos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">clase Banana {\n  constructor(\n    public longitud: n\u00famero,\n    public color: cadena,\n    public radiaci\u00f3n ionizante: n\u00famero\n  ) {}\n}\n\nclase BananaBasket {\n  privado bananas: Banana[] = [];\n\n  add(banana: Banana): void {\n    this.bananas.push(banana);\n  }\n}\n\nconst bananaBasket = new BananaBasket();\nbananaBasket.add(nuevo Banana(3.14, 'rojo', 10e-7));<\/code><\/pre>\n\n\n\n<p>Ahora vamos a tratar de crear cesta de prop\u00f3sito general, a diferentes cosas con el mismo tipo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">clase Cesta {\n  cosas privadas: T[] = [];\n\n  add(cosa: T): void {\n    this.stuff.push(cosa);\n  }\n}\n\nconst bananaBasket = nueva Cesta();<\/code><\/pre>\n\n\n\n<p>Y por \u00faltimo, supongamos que nuestra cesta es un contenedor de material radiactivo y s\u00f3lo podemos almacenar materia que tenga <code>Radiaci\u00f3n ionizante<\/code> propiedad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">interfaz IRadioactive {\n  ionizingRadiation: n\u00famero;\n}\n\nclase RadioactiveContainer {\n  privado stuff: T[] = [];\n\n  add(cosa: T): void {\n    this.stuff.push(cosa);\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Interfaz gen\u00e9rica<\/h2>\n\n\n\n<p>Por \u00faltimo intentemos reunir todos nuestros conocimientos y construyamos un imperio radioactivo utilizando tambi\u00e9n Interfaces Gen\u00e9ricas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Definir atributos comunes para contenedores\ninterfaz IRadioactivo {\n  ionizingRadiation: n\u00famero;\n}\n\n\n\/\/ Definir algo que es radioactivo\ninterface IBanana extends IRadioactive {\n  longitud: n\u00famero;\n  color: cadena;\n}\n\n\/\/ Definir algo que no es radioactivo\ninterfaz IDog {\n  peso: n\u00famero;\n}\n\n\/\/ Define una interfaz para un contenedor que s\u00f3lo puede contener cosas radioactivas\ninterface IRadioactiveContainer {\n  add(cosa: T): void;\n  getRadioactiveness():n\u00famero;\n}\n\n\/\/ Definir clase que implemente la interfaz del contenedor radioactivo\nclass ContenedorRadioactivo implements ContenedorRadioactivo {\n  privado stuff: T[] = [];\n\n  add(cosa: T): void {\n    this.stuff.push(cosa);\n  }\n\n  getRadioactividad(): number {\n      return this.stuff.reduce((a, b) =&gt; a + b.ionizingRadiation, 0)\n  }\n}\n\n\/\/ \u00a1ERROR! El tipo 'IDog' no satisface la restricci\u00f3n 'IRadioactive'\n\/\/ Y es un poco brutal almacenar perros dentro de un contenedor radioactivo\nconst perrosContenedor = new ContenedorRadioactivo();\n\n\/\/ \u00a1Todo bien fam!\nconst radioactiveContainer = new RadioactiveContainer();\n\n\/\/ Recuerda clasificar tus residuos radioactivos - crea un contenedor separado s\u00f3lo para pl\u00e1tanos\nconst bananasContainer = nuevo RadioactiveContainer();<\/code><\/pre>\n\n\n\n<p>\u00a1Eso es todo, amigos!<\/p>","protected":false},"excerpt":{"rendered":"<p>Los gen\u00e9ricos proporcionan fragmentos de c\u00f3digo reutilizables que funcionan con varios tipos en lugar de con un \u00fanico tipo. Los gen\u00e9ricos permiten tratar el tipo como una variable y especificarlo al utilizarlo, de forma similar a los par\u00e1metros de funci\u00f3n.<\/p>","protected":false},"author":2,"featured_media":3249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Generics in TypeScript - The Codest<\/title>\n<meta name=\"description\" content=\"Generics provide reusable bits of code that work with a number of types instead of a single type. Generics provide a way to treat type as a variable and specify it on usage, similar to function parameters.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/es\/blog\/genericos-en-typescript\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generics in TypeScript\" \/>\n<meta property=\"og:description\" content=\"Generics provide reusable bits of code that work with a number of types instead of a single type. Generics provide a way to treat type as a variable and specify it on usage, similar to function parameters.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/es\/blog\/genericos-en-typescript\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-13T08:52:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:39:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Generics in TypeScript\",\"datePublished\":\"2020-07-13T08:52:00+00:00\",\"dateModified\":\"2026-04-24T11:39:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/\"},\"wordCount\":516,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-75.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/\",\"name\":\"Generics in TypeScript - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-75.jpg\",\"datePublished\":\"2020-07-13T08:52:00+00:00\",\"dateModified\":\"2026-04-24T11:39:03+00:00\",\"description\":\"Generics provide reusable bits of code that work with a number of types instead of a single type. Generics provide a way to treat type as a variable and specify it on usage, similar to function parameters.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-75.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-75.jpg\",\"width\":1200,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/generics-in-typescript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generics in TypeScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/es\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gen\u00e9ricos en TypeScript - The Codest","description":"Los gen\u00e9ricos proporcionan fragmentos de c\u00f3digo reutilizables que funcionan con varios tipos en lugar de con un \u00fanico tipo. Los gen\u00e9ricos permiten tratar el tipo como una variable y especificarlo al utilizarlo, de forma similar a los par\u00e1metros de funci\u00f3n.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/es\/blog\/genericos-en-typescript\/","og_locale":"es_ES","og_type":"article","og_title":"Generics in TypeScript","og_description":"Generics provide reusable bits of code that work with a number of types instead of a single type. Generics provide a way to treat type as a variable and specify it on usage, similar to function parameters.","og_url":"https:\/\/thecodest.co\/es\/blog\/genericos-en-typescript\/","og_site_name":"The Codest","article_published_time":"2020-07-13T08:52:00+00:00","article_modified_time":"2026-04-24T11:39:03+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Generics in TypeScript","datePublished":"2020-07-13T08:52:00+00:00","dateModified":"2026-04-24T11:39:03+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/"},"wordCount":516,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg","articleSection":["Software Development"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/generics-in-typescript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/","url":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/","name":"Gen\u00e9ricos en TypeScript - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg","datePublished":"2020-07-13T08:52:00+00:00","dateModified":"2026-04-24T11:39:03+00:00","description":"Los gen\u00e9ricos proporcionan fragmentos de c\u00f3digo reutilizables que funcionan con varios tipos en lugar de con un \u00fanico tipo. Los gen\u00e9ricos permiten tratar el tipo como una variable y especificarlo al utilizarlo, de forma similar a los par\u00e1metros de funci\u00f3n.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/generics-in-typescript\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-75.jpg","width":1200,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/generics-in-typescript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Generics in TypeScript"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/es\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/comments?post=3248"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3248\/revisions"}],"predecessor-version":[{"id":7822,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3248\/revisions\/7822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media\/3249"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media?parent=3248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/categories?post=3248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/tags?post=3248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}