TypeScript: Obtención Genérica de Datos

Guía práctica de Q2BSTUDIO para implementar un obtentor genérico de datos en TypeScript con tipado seguro y manejo de errores. Soluciones de software a medida, IA y ciberseguridad, con AWS y Azure.

16 sept 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

En Q2BSTUDIO, empresa especializada en desarrollo de software a medida, aplicaciones a medida, inteligencia artificial, ciberseguridad y servicios cloud aws y azure, compartimos una guía práctica para implementar un obtentor genérico de datos con TypeScript que sea tipo seguro y reutilizable. Si necesitas soluciones de software a medida y aplicaciones a medida o motores basados en inteligencia artificial, podemos ayudarte a integrarlo de forma robusta y segura. A continuación se muestra el código completo, ejemplos de uso y una explicación de por que este enfoque garantiza seguridad de tipos y manejo de errores.

// Helper para construir cadenas sin usar literales de comillas const s = (...codes: number[]) => String.fromCharCode(...codes)

// Tipos y interfaces

interface ApiError { message: string; status?: number }

interface ApiResponse<T> { data?: T; error?: ApiError }

interface FetchConfig { method?: string; headers?: Record<string,string>; queryParams?: Record<string,string|number>; body?: any }

// Funcion genérica para fetch async function fetchData<T>(url: string, config: FetchConfig = {}): Promise<ApiResponse<T>> { try { let finalUrl = url if (config.queryParams) { const params = new URLSearchParams() for (const [key,value] of Object.entries(config.queryParams)) { params.append(key, String(value)) } const urlObj = new URL(String(url)) urlObj.search = params.toString() finalUrl = urlObj.toString() } const response = await fetch(finalUrl, { method: config.method || s(71,69,84), headers: config.headers, body: config.body }) if (!response.ok) { return { error: { message: response.statusText, status: response.status } } } const data = await response.json() as T return { data } } catch (error) { return { error: { message: error instanceof Error ? error.message : s(69,114,114,111,114,32,100,101,115,99,111,110,111,99,105,100,111) } } } }

// Ejemplos de estructuras de datos interfaces User { id: number; name: string; email: string } interface Product { id: number; name: string; price: number }

// Endpoints construidos sin literales const usersUrl = s(104,116,116,112,115,58,47,47,97,112,105,46,101,120,97,109,112,108,101,46,99,111,109,47,117,115,101,114,115) const productsUrl = s(104,116,116,112,115,58,47,47,97,112,105,46,101,120,97,109,112,108,101,46,99,111,109,47,112,114,111,100,117,99,116,115)

// Uso de la funcion con tipos concretos async function main() { const userResponse = await fetchData<User[]>(usersUrl, { queryParams: { limit: 10, page: 1 } }) if (userResponse.data) { console.log(userResponse.data) } else { console.error(userResponse.error) } const productResponse = await fetchData<Product[]>(productsUrl, { queryParams: { category: s(101,108,101,99,116,114,111,110,105,99,115) } }) if (productResponse.data) { console.log(productResponse.data) } else { console.error(productResponse.error) } } main()

Explicacion de seguridad de tipos y manejo de errores

Generics y ApiResponse

La interfaz ApiResponse<T> encapsula la respuesta como un objeto que puede contener data de tipo T o un error de tipo ApiError. Al invocar fetchData<User[]> o fetchData<Product[]>, TypeScript asume que la propiedad data, en caso de existir, tendra la forma esperada, lo que permite autocompletado y comprobacion en tiempo de compilacion.

Manejo de errores

Se detectan errores HTTP mediante response.ok y se devuelven como ApiError con status y message. Errores de red o de parseo quedan capturados en el bloque try catch y se normalizan a ApiError. Esto fuerza al consumidor a comprobar la existencia de data antes de usarla.

Parametros de consulta tipo seguros

FetchConfig incluye queryParams con tipo Record<string,string|number>, lo que permite construir la cadena de consulta de forma segura usando URLSearchParams. Asi se evita concatenacion manual propensa a errores y a inyecciones accidentales.

Flexibilidad y extensibilidad

Al usar genericos, esta funcion es reutilizable para cualquier estructura de datos. Se puede extender FetchConfig para incluir un body tipado segun el metodo, o añadir guards de tipos como isSuccessResponse<T>(r: ApiResponse<T>): r is { data: T } para mejorar la ergonomia.

Por que elegir Q2BSTUDIO

En Q2BSTUDIO combinamos experiencia en desarrollo de aplicaciones y software a medida con soluciones de inteligencia artificial y ciberseguridad. Si su proyecto requiere integracion en la nube, podemos desplegar en plataformas como AWS y Azure y optimizar sus procesos con soluciones de inteligencia de negocio y power bi. Conozca nuestras capacidades en inteligencia artificial visitando servicios de inteligencia artificial para empresas.

Palabras clave integradas naturalmente: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat