Structural SubtypingΒΆ

A structural type A is said to be a structural subtype of another type B when A declares all of the members of B.


It does not matter whether A declares more members than B; as long as A declares at least all of the members of B, then A is a subtype of B.

For instance, in this snippet:

a = {
    x = 'former'
    y = 'latter'

b: [x: ''] = a

the type of a is a structural subtype of [x: ''] (the type of b), because a defines at least a member x: ''. This is why assigning a to b is perfectly legal.