Tipos, interfaces y componentes con TypeScript en React Native.
¿Por qué TypeScript?
- Prevención de errores comunes y tipado estático.
typescript1function calculateTotal(price: number, quantity: number): number { 2 return price * quantity; 3} 4// calculateTotal("50", "2"); // ❌ Error de compilación 5// calculateTotal(50, 2); // ✅ 100
Tipos Básicos y Arrays
typescript1let userName: string = "Ana"; 2let age: number = 28; 3let isActive: boolean = true; 4let numbers: number[] = [1, 2, 3]; 5let names: Array<string> = ["Ana", "Luis"]; 6let coordinate: [number, number] = [10.5, 20.3]; 7let id: string | number = 123; 8let status: "active" | "inactive" | "pending" = "active";
Interfaces y Types
typescript1interface User { 2 id: number; 3 name: string; 4 email: string; 5 age?: number; 6 isAdmin: boolean; 7} 8const user: User = { 9 id: 1, 10 name: "Pedro", 11 email: "pedro@example.com", 12 isAdmin: false, 13}; 14type Product = { id: number; name: string; price: number }; 15type DiscountedProduct = Product & { discount: number; finalPrice: number }; 16interface Animal { 17 name: string; 18 age: number; 19} 20interface Dog extends Animal { 21 breed: string; 22 bark: () => void; 23}
Componentes con TypeScript
typescript1import { View, Text, StyleSheet } from "react-native"; 2import { FC } from "react"; 3interface ProfileCardProps { 4 name: string; 5 bio: string; 6 imageUrl: string; 7 followers: number; 8 onFollow: () => void; 9} 10const ProfileCard: FC<ProfileCardProps> = ({ name, bio, imageUrl, followers, onFollow }) => { 11 return ( 12 <View style={styles.container}> 13 <Image source={{ uri: imageUrl }} style={styles.avatar} /> 14 <Text style={styles.name}>{name}</Text> 15 <Text style={styles.bio}>{bio}</Text> 16 <Text style={styles.followers}>{followers} seguidores</Text> 17 <Button title="Seguir" onPress={onFollow} /> 18 </View> 19 ); 20};
Recursos
1 recurso disponible
Reto de Lectura
Reto de LecturaPrincipiante30 min🔴 Sin IA
Reto de Lectura — Los tipos que mienten
Este código TypeScript compila sin errores y no protege absolutamente nada. Encuentra los 5 lugares donde el tipado es teatro.
TypeScript solo te protege si le dices la verdad. Este código —muy del estilo de la IA cuando "agrega TypeScript" a la carrera— compila limpio y es teatro. Encuentra los 5 engaños y corrígelos.
typescript1interface Usuario { 2 id: any; 3 nombre: string; 4 correo?: string; 5 config: any; 6} 7 8function obtenerUsuario(datos: any): Usuario { 9 return datos as Usuario; 10} 11 12function enviarCorreo(u: Usuario) { 13 const destino = u.correo!.toLowerCase(); 14 console.log("Enviando a", destino); 15} 16 17const respuesta = '{"id": 7, "nombre": "Ana"}'; 18const usuario = obtenerUsuario(JSON.parse(respuesta)); 19enviarCorreo(usuario); // compila... ¿y en runtime?
Preguntas:
- ¿Qué truena en runtime en este ejemplo exacto y por qué el compilador no lo vio?
- ¿Qué "promete" el
as Usuarioy qué verifica realmente? - ¿Por qué
id: anyes peor que no usar TypeScript en esa propiedad? - Corrige: tipos honestos + manejo del correo opcional + validación en la frontera.
Clase 4 de 31 en la ruta Desarrollo movil