Structural typing
TypeScript uses structural (duck) typing: two objects are compatible if they have the same shape, regardless of name:
interface A { x: number; y: number; }
interface B { x: number; y: number; }
const a: A = { x: 1, y: 2 };
const b: B = a; // OK: same shape, names don't matter
This makes types composable and flexible, matching on structure rather than declared identity.