TypeScriptLección 5 de 16

Objetos e interfaces

Una interfaz describe la forma de un objeto: qué campos tiene y de qué tipo son. Todo objeto declarado con ese tipo debe cumplirla.

Lo esencial

  • interface User { id: number; name: string } es un nombre y una lista de campos.
  • El signo ? hace opcional un campo: email?: string.
  • extends añade campos a una interfaz existente.
  • Si falta un campo obligatorio, TypeScript te dice cuál.

Ejemplo

interface User {  id: number;  name: string;  email?: string; // optional property} interface Admin extends User {  permissions: string[];} const anna: User = { id: 1, name: "Anna" };const ben: Admin = { id: 2, name: "Ben", email: "ben@example.com", permissions: ["edit"] };// const ghost: User = { id: 3 }; // error: property 'name' is missing function contact(user: User): string {  return user.email ?? "no email";} console.log(`${anna.name}: ${contact(anna)}`);console.log(`${ben.name}: ${contact(ben)}, can ${ben.permissions.join(", ")}`);

Admin recibe todos los campos de User y añade permissions. Un objeto sin name no pasa la comprobación, y un email ausente se sustituye por texto con ??.

Tarea

Cómo usar el editor⌘ Enter o Ctrl Enter ejecuta el código, ⇧ ⌘ Enter comprueba la tarea.Tab y Mayús Tab sangran la línea o la selección; Esc y luego Tab sale del editor.La comprobación compara lo que imprimió el programa con la tarea; los espacios al final de línea no cuentan.Tras dos comprobaciones fallidas puedes ver la solución. Tu código se guarda en este navegador.

Amplía CartItem con quantity y un gift opcional, haz que lineTotal devuelva precio por cantidad e imprime «Mug: 16 (gift)» y «Tea: 15».

Salida

Aquí aparecerá lo que imprima el programa.