According to the docs
https://wiki.freepascal.org/Helper_typesRestrictions
A helper type
may not contain (class) destructors (except in trunk FPC 3.3.1)
contain class constructors (except in trunk FPC 3.3.1)
contain fields contain abstract methods
"override" virtual methods of the extended class (they can be hidden by the helper though)
When it comes to the matter of fields although they can't have fields in their type definitions, is it possible for them to reference other values they initialize themselves, eg allocate some memory or some records and store the values there, or reference some values initialized elsewhere?
Consider this example I run queries on some database connections whose settings are stored in a database table where they have GUIDs.
So if two or more queries connect to the same connection it will be better to check if a database with that GUID is already open, and use that connection rather create a new, some kind of poor man's connection pool.
So a type helper with a TConnection.GUID setter and getter would read and write that GUID, along the lines of TConnection.SetGUID(GUID) which could be stored in some other list, probably a global or static structure owned by the application.
Does this make sense?