The Erlang records created by the Erlang code generator allow only the type declared by the Thrift definition file. If a field is not required, however, the Erlang record should also allow the value undefined (this is similar to a null value in other languages).
Erlang includes a tool, dialyzer, that does type analysis of Erlang code. Until Erlang 19, dialyzer implicitly added `undefined` as an allowed type for all record fields, but as of Erlang 19 it no longer does. This means that dialyzer now emits error messages whenever a record is constructed and initial values are not specified for all of its fields.
So, for example, the following thrift definition
currently produced the following Erlang record:
However it should produce the following: