5 Tips de TypeScript que debes conocer
Zahid Dehara··2 min read
TypeScript se ha convertido en el estándar para desarrollo JavaScript moderno. Aquí te comparto algunos tips útiles.
1. Usa unknown en lugar de any
Cuando no conoces el tipo de una variable, es tentador usar any. Sin embargo, unknown es más seguro:
// No recomendado
function procesar(data: any) {
return data.value; // No hay verificación de tipos
}
// Recomendado
function procesar(data: unknown) {
if (typeof data === 'object' && data !== null && 'value' in data) {
return (data as { value: string }).value;
}
}
2. Utility Types son tus amigos
TypeScript incluye tipos de utilidad increíbles:
interface Usuario {
id: string;
nombre: string;
email: string;
edad: number;
}
// Partial: Hace todas las propiedades opcionales
type ActualizarUsuario = Partial<Usuario>;
// Pick: Selecciona propiedades específicas
type UsuarioPublico = Pick<Usuario, 'nombre' | 'edad'>;
// Omit: Excluye propiedades
type UsuarioSinId = Omit<Usuario, 'id'>;
3. Type Guards personalizados
Crea funciones que TypeScript entienda como verificadores de tipo:
interface Perro {
ladrar: () => void;
}
interface Gato {
maullar: () => void;
}
function esPerro(animal: Perro | Gato): animal is Perro {
return 'ladrar' in animal;
}
function hacerSonido(animal: Perro | Gato) {
if (esPerro(animal)) {
animal.ladrar(); // TypeScript sabe que es un Perro
} else {
animal.maullar(); // TypeScript sabe que es un Gato
}
}
4. Const Assertions
Usa as const para tipos más específicos:
// Sin const assertion
const colores = ['rojo', 'verde', 'azul']; // string[]
// Con const assertion
const colores = ['rojo', 'verde', 'azul'] as const; // readonly ['rojo', 'verde', 'azul']
5. Template Literal Types
Crea tipos dinámicos con template literals:
type Evento = 'click' | 'scroll' | 'mousemove';
type EventoHandler = `on${Capitalize<Evento>}`; // 'onClick' | 'onScroll' | 'onMousemove'
Conclusión
TypeScript es una herramienta poderosa. Estos tips te ayudarán a escribir código más seguro y mantenible.
¡Happy coding!
typescriptjavascriptprogramming