¿Cuándo `infer`, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad?
¿Cuándo `infer`, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad? en TypeScript: criterios sobre rendimiento y conditional ti...
La mejor forma de responder "¿Cuándo infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad?" en TypeScript es separar mecanismo técnico, criterio de uso y señales de revisión.
Una respuesta senior se nota cuando nombras qué riesgo quieres reducir con rendimiento en TypeScript para "Cuándo infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad", qué concesión aceptarías frente a conditional tipos y qué comprobarías antes de extender la decisión a todo el sistema.
Qué evalúa el entrevistador
- Si distingues qué parte de "Cuándo
infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad" pertenece a rendimiento y cuál debería resolverse en conditional tipos. - Si conviertes la respuesta en criterios observables: límites claros, impacto en el mantenimiento y forma de detectar regresiones.
- Si usas el sistema de tipos para capturar invariantes y reducir ambigüedad en lugar de acumular tipos ceremoniales.
Respuesta sólida
- Empieza por la forma del dato y por los invariantes que no quieres volver a revisar en cada llamada.
- Usa tipos que ayuden a modelar estados válidos e inválidos en vez de esconderlos tras uniones demasiado amplias o casts oportunistas.
- Completa la respuesta con el puente entre tipado y runtime: validación de entrada, narrowing o conversión explícita cuando haga falta.
Compromisos y errores comunes
- Llenar el código de casts o tipos demasiado permisivos anula justo la garantía que intentabas conseguir.
- Modelar estados imposibles como si fueran normales desplaza el error a producción o a la lógica de presentación.
Ejemplo de código
Este fragmento sirve para bajar "Cuándo infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad" a código ejecutable y mostrar qué decisiones conviene hacer explícitas cuando rendimiento empieza a cruzarse con conditional tipos.
type LoadingState<T> =
| { status: "idle" }
| { status: "loading" }
| { status: "success"; data: T }
| { status: "error"; message: string };
function isSuccess<T>(state: LoadingState<T>): state is { status: "success"; data: T } {
return state.status === "success";
}
const state: LoadingState<number> = { status: "success", data: 42 };
if (isSuccess(state)) console.log(state.data);
Fíjate en que el ejemplo deja claras las fronteras de "Cuándo infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad", nombra los estados relevantes y evita trabajo implícito que luego cuesta depurar.
Ejemplo o caso real
La forma seria de aterrizar "Cuándo infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad" es escoger un caso con usuarios reales, un criterio de éxito visible y una superficie de rollback pequeña. Eso obliga a hablar de impacto, no de dogmas, y evita convertir rendimiento en arquitectura ornamental.
Frase corta de entrevista
En "Cuándo
infer, conditional types y mapped types ayudan de verdad y cuándo dañan la legibilidad" me interesa más mantener una fuente de verdad clara y una validación honesta que sonar sofisticado.
Marcarla como leída actualiza tu progreso.