2 min de lectura

10 tips de TypeScript para escribir mejor codigo

TypeScript se ha convertido en el estándar para proyectos JavaScript profesionales. Aquí comparto 10 tips que uso diariamente.

1. Usa unknown en lugar de any

El tipo unknown es más seguro que any porque requiere validación:

function processValue(value: unknown) {
  if (typeof value === "string") {
    return value.toUpperCase();
  }
  throw new Error("Expected string");
}

2. Tipos de utilidad nativos

TypeScript incluye tipos útiles como Partial, Required, Pick y Omit:

interface User {
  id: number;
  name: string;
  email: string;
}

type UserUpdate = Partial<Pick<User, "name" | "email">>;

3. Const assertions

Usa as const para hacer que los valores sean inmutables:

const config = {
  apiUrl: "https://api.example.com",
  timeout: 5000,
} as const;

4. Template literal types

Crea tipos dinámicos basados en strings:

type EventName = `on${Capitalize<string>}`;
// "onClick", "onHover", etc.

5. Discriminated unions

Usa una propiedad común para discriminar entre tipos:

type Result<T> =
  | { success: true; data: T }
  | { success: false; error: Error };

6. Satisfies operator

Valida tipos sin perder la inferencia:

const colors = {
  red: "#ff0000",
  green: "#00ff00",
} satisfies Record<string, string>;

7. Type guards personalizados

Crea funciones que refinan tipos:

function isString(value: unknown): value is string {
  return typeof value === "string";
}

8. Generics con constraints

Limita los tipos genéricos:

function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

9. Inferencia con infer

Extrae tipos de otros tipos:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

10. Strict mode siempre

Activa todas las verificaciones estrictas en tsconfig.json:

{
  "compilerOptions": {
    "strict": true
  }
}

Conclusión

Estos tips te ayudarán a aprovechar al máximo TypeScript. La clave está en practicar y aplicarlos gradualmente en tus proyectos.

¿Te gustó? ¡Compártelo!

Comentarios (0)

Cargando...