-
Book Overview & Buying
-
Table Of Contents
TypeScript Blueprints
By :
TypeScript uses a structural type system. What that means can be easily demonstrated using the following example:
class Person {
name: string;
}
class City {
name: string;
}
const x: City = new Person();
In languages like C#, this would not compile. These languages use a nominal type system. Based on the name, a Person is not a City. TypeScript uses a structural type system. Based on the structure of Person and City, these types are equal, as they both have a name property. This fits well in the dynamic nature of JavaScript. It can, however, lead to some unexpected behavior, as the following would compile:
class Foo {
}
const f: Foo = 42;
Since Foo does not have any properties, every value would be assignable to it. In cases were the structural behavior is not desired, you can add a brand, a property that adds type safety but does not exist at runtime:
class Foo {
__fooBrand...