An interface names the shape of an object: which properties and methods it has, and the type of each. Any object with that shape is accepted, whatever created it, because TypeScript compares structure, not names.
interface User {
id: number;
name: string;
email: string;
isActive?: boolean; // Optional property
readonly createdAt: Date; // Read-only property
}
const user: User = {
id: 1,
name: "John Doe",
email: "john@example.com",
createdAt: new Date()
};
A ? marks an optional property, and readonly blocks reassignment after the object is created. Interfaces exist only at compile time and emit no JavaScript. One interface can extend another, and a class uses the implements keyword to promise it has that shape.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓