As in Drupal 7, content entities in D8 have two types of fields--base fields and configurable fields. For Drupal 7 developers, the former are essentially the old "property" fields while the latter are the "field UI" fields. However, as we will see in a moment, they are now very different implementations in that they are very similar to each other.
First and foremost, content entity fields in Drupal 8 are built on top of the low-level TypedData API. The latter is a complex system for modeling data in code and it is widely used in Drupal 8. Unfortunately, it is also one of the APIs least understood by developers. Not to worry, in the next section I will break it down for you. Since we still don't know anything about it, ...