Capas de configuración y valores predeterminados
Combine valores predeterminados, archivos y sobrescrituras del entorno.
Capas de configuración y valores predeterminados es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.
Configuración por capas
Las aplicaciones reales reúnen la configuración de varias fuentes: valores predeterminados integrados, un archivo de configuración y sobrescrituras del entorno. Las capas posteriores sobrescriben las anteriores según un orden de precedencia definido.
Orden de precedencia
Un orden habitual, de menor a mayor prioridad, es: valores predeterminados < configuración del archivo < variables de entorno. Las sobrescrituras del entorno prevalecen porque se adaptan bien a los ajustes específicos de cada despliegue.
Definir las capas
Cada capa es una configuración parcial. Solo los valores predeterminados básicos deben estar completos; las demás capas rellenan o sobrescriben campos concretos.
interface Config { port: number; host: string; logLevel: string; }
const defaults: Config = { port: 3000, host: "localhost", logLevel: "info" };Sobrescrituras parciales
Las capas del archivo y del entorno son Partial<Config>, ya que pueden especificar solo algunas claves. Tiparlas como parciales refleja que cualquier campo puede estar ausente.
const fileConfig: Partial<Config> = { port: 8080 };
const envConfig: Partial<Config> = { logLevel: "debug" };Merge superficial
Para una configuración plana, un merge con spread aplica la precedencia correctamente. Los objetos posteriores sobrescriben las claves anteriores y producen la configuración final.
const config: Config = { ...defaults, ...fileConfig, ...envConfig };
// { port: 8080, host: "localhost", logLevel: "debug" }Por qué importa el orden
Como el spread posterior prevalece, la fuente que aparece al final tiene la prioridad más alta. Si reordena los spreads, cambia qué capa sobrescribe a cuál.
La configuración anidada necesita un merge profundo
El spread superficial reemplaza objetos anidados completos. Si la configuración tiene secciones anidadas, necesita un merge profundo que las combine de forma recursiva en lugar de sobrescribirlas.
interface Config { db: { host: string; port: number }; }
// { ...a, ...b } would replace the entire db object, losing keys.Un merge profundo tipado
Un merge recursivo recorre ambos objetos, desciende hasta los registros anidados y sobrescribe los valores finales. Para tipar el resultado se necesita un auxiliar de tipos recursivo.
type DeepPartial<T> = { [K in keyof T]?: DeepPartial<T[K]> };
function deepMerge<T>(base: T, over: DeepPartial<T>): T {
const out: any = { ...base };
for (const k in over) {
const v = (over as any)[k];
out[k] = v && typeof v === "object" ? deepMerge((base as any)[k], v) : v;
}
return out;
}DeepPartial para capas de sobrescritura
Las capas de sobrescritura se tipan como DeepPartial<Config>, de modo que pueden especificar cualquier subconjunto de claves anidadas sin dejar de comprobarse contra la estructura completa.
const override: DeepPartial<Config> = { db: { port: 5433 } };
// merges into db without dropping db.hostCombinar con la validación
Haga primero el merge y valide después el resultado con un esquema. Así, la configuración final completamente resuelta es la que se comprueba para verificar su corrección.
// const merged = deepMerge(defaults, override);
// const config = ConfigSchema.parse(merged);Buenas prácticas para la configuración por capas
Mantenga los valores predeterminados completos y seguros, permita que los archivos expresen la configuración específica de cada entorno y reserve las variables de entorno para secretos y sobrescrituras propias de cada despliegue, en la parte superior de la cadena de precedencia.
Comprobación rápida
Comprobación rápida de esta lección.
Resumen
La configuración por capas combina los valores predeterminados, la configuración del archivo y las sobrescrituras del entorno según su precedencia (valores predeterminados < archivo < entorno). La configuración plana usa spread; la configuración anidada necesita un merge profundo tipado con DeepPartial<Config>. Valide el resultado combinado.
Preguntas frecuentes
¿La lección «Capas de configuración y valores predeterminados» es gratis?
Sí — el texto completo de «Capas de configuración y valores predeterminados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Capas de configuración y valores predeterminados»?
Combine valores predeterminados, archivos y sobrescrituras del entorno. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Capas de configuración y valores predeterminados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Tipado de variables de entorno
- Configuración validada mediante esquemas
- Capas de configuración y valores predeterminados
- Secretos y seguridad de tipos