← TypeScript EspañolChapter 02 of 12

Variables y Tipos

## Objetivos de Aprendizaje - Declarar variables con let, const y var - Comprender los tipos basicos de TypeScript - Dominar la inferencia de tipos - Aprender anotaciones de tipo - Trabajar con arrays y tuplas ## Declaraciones de Variables ### let Variable de ambito de bloque, mutable: ```typescript let age: number = 25; age = 26; // OK ``` ### const Enlace de ambito de bloque, inmutable: ```typescript const PI: number = 3.14159; // PI = 3.14; // Error: No se puede asignar a 'PI' ``` ### var (Evitar) Ambito de funcion, hoisted (evitar en TypeScript): ```typescript var name: string = "Juan"; // Preferir let y const ``` ## Tipos Basicos ### number Todos los numeros, enteros y decimales: ```typescript let integer: number = 42; let decimal: number = 3.14; let hex: number = 0xFF; let binary: number = 0b1010; let octal: number = 0o744; ``` ### string Valores de texto: ```typescript let firstName: string = "Juan"; let lastName: string = 'Perez'; let fullName: string = `${firstName} ${lastName}`; // Literales de plantilla let greeting: string = `Hola, ${firstName}!`; ``` ### boolean True o false: ```typescript let isActive: boolean = true; let isComplete: boolean = false; ``` ### null y undefined ```typescript let nullValue: null = null; let undefinedValue: undefined = undefined; ``` ## Inferencia de Tipos TypeScript puede inferir tipos desde valores iniciales: ```typescript // El tipo se infiere como 'string' let message = "Hola"; message = 123; // Error: El tipo 'number' no es asignable al tipo 'string' // El tipo se infiere como 'number' let count = 10; count = "diez"; // Error ``` ### Cuando Funciona la Inferencia ```typescript let x = 10; // number let y = "hola"; // string let z = true; // boolean ``` ## Anotaciones de Tipo Declaraciones de tipo explicitas: ```typescript let age: number; let name: string; let active: boolean; // Con inicializacion let score: number = 100; let title: string = "Desarrollador"; ``` ## Arrays ### Anotacion de Tipo ```typescript let numbers: number[] = [1, 2, 3, 4, 5]; let names: string[] = ["Alice", "Bob", "Charlie"]; let flags: boolean[] = [true, false, true]; ``` ### Sintaxis Generica de Array ```typescript let numbers: Array = [1, 2, 3]; let names: Array = ["Alice", "Bob"]; ``` ### Acceder a Elementos ```typescript let first: number = numbers[0]; let last: string = names[names.length - 1]; ``` ## Tuplas Arrays de longitud fija con tipos conocidos: ```typescript let person: [string, number]; person = ["Alice", 30]; // person = [30, "Alice"]; // Error: El tipo 'number' no es asignable al tipo 'string' let name: string = person[0]; let age: number = person[1]; ``` ### Elementos Opcionales ```typescript let config: [string, number?]; config = ["desarrollo"]; config = ["desarrollo", 8080]; ``` ## Tipo Any Evitar comprobacion de tipos (evitar cuando sea posible): ```typescript let dynamic: any = 123; dynamic = "hola"; dynamic = true; dynamic = [1, 2, 3]; // Sin comprobacion de tipos en any dynamic.toUpperCase(); // Funciona en tiempo de compilacion ``` ## Tipo Unknown Alternativa segura a any: ```typescript let unknownValue: unknown = 123; // Debe reducir o verificar antes de usar if (typeof unknownValue === "string") { console.log(unknownValue.toUpperCase()); } // O usar asercion de tipo let str: string = unknownValue as string; ``` ## Tipo Void Sin valor de retorno: ```typescript function logMessage(message: string): void { console.log(message); // Sin return } let result: void = undefined; ``` ## Tipo Never Funcion que nunca retorna: ```typescript function throwError(message: string): never { throw new Error(message); } function infiniteLoop(): never { while (true) { // Nunca retorna } } ``` ## Aserciones de Tipo Decirle a TypeScript el tipo: ```typescript let value: unknown = "hola"; // Sintaxis de corchetes angulares let len1: number = (value).length; // Sintaxis as let len2: number = (value as string).length; ``` ## Tipos de Objetos ```typescript let point: { x: number; y: number } = { x: 10, y: 20 }; function distance(p1: { x: number; y: number }): number { return Math.sqrt(p1.x ** 2 + p1.y ** 2); } ``` ## Tipos Union Multiples tipos posibles: ```typescript let id: string | number; id = 123; id = "ABC123"; function printId(id: string | number): void { console.log(`ID: ${id}`); } ``` ## Alias de Tipo Nombre para un tipo: ```typescript type StringOrNumber = string | number; type Point = { x: number; y: number }; let value: StringOrNumber = "hola"; let coord: Point = { x: 0, y: 0 }; ``` ## Propiedades readonly No pueden ser modificadas despues de la creacion: ```typescript interface Config { readonly host: string; readonly port: number; } let config: Config = { host: "localhost", port: 8080 }; // config.port = 3000; // Error: No se puede asignar a 'port' ``` ## Resumen - Usar `const` por defecto, `let` cuando sea necesario, evitar `var` - Tipos basicos: `number`, `string`, `boolean`, `null`, `undefined` - TypeScript infiere tipos desde valores iniciales - Arrays: `number[]` o `Array` - Tuplas: `[string, number]` para arrays de longitud fija - Evitar `any`, preferir `unknown` - Usar alias de tipo para tipos complejos - `readonly` para propiedades inmutables

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →