In the type system of a programming language, a type is an object with a name and a structure. Some types have very simple data structures (such as primitives) while others use complex structures (such as classes).
The type system can use two different strategies to validate that a given value matches the desired type:
- Nominal type system: In this type system, values are matched against a type by its name
- Structural type system: In this type system, values are matched against a type by its structure
The TypeScript type system is a structural type system because the values are matched against a type by its structure, as the following code snippet demonstrates:
interface Person { name: string; surname: string; } function ...