AnyCompiler

Objects e Interfaces

Una interface describe la forma que debe tener un objeto — qué propiedades necesita, y de qué tipo es cada una. Una vez que la escribes, TypeScript comprueba cada objeto que afirmas que la cumple.

interface Person {
  name: string;
  age: number;
}

let alice: Person = { name: "Alice", age: 30 };
console.log(alice);
console.log(alice.name);
Output
{ name: 'Alice', age: 30 }
Alice

Propiedades opcionales y readonly

Un ? después del nombre de una propiedad la hace opcional — un objeto puede omitirla por completo. readonly marca una propiedad que se puede asignar una sola vez (normalmente cuando se crea el objeto) pero nunca reasignar después.

interface Product {
  readonly id: number;
  name: string;
  discount?: number;
}

let item: Product = { id: 1, name: "Keyboard" };
console.log(item);

item.name = "Mechanical Keyboard";
console.log(item);
Output
{ id: 1, name: 'Keyboard' }
{ id: 1, name: 'Mechanical Keyboard' }

item.id = 2 se marcaría de inmediato — readonly se hace cumplir en tiempo de compilación, de la misma forma que cualquier otra regla de tipos.

Siguiente: type aliases y union types — nombrar un tipo, y describir un valor que podría ser de más de un tipo.