Good and Sad.
This is a good improvement.
Unknown and Any are concepts dating from 1970s in strong typed languages and used in Modula-2 in 1980s.
A variable of anonymous type (usually an array defined in the variable declaration) was not assignable directly to any apparently identical variable.
Byte was assignable to anything same size (like Any), An Array of Byte (a magic type) could be used as a parameter. Size, High and Low inside the function or procedure would allow identification of number of bytes or Array bounds safely.
Sadly Modula-2 was often taught like Pascal with no explanation of Import, Export, Opaque Modules, extra stronger typing, magic types and co-routines. I used to write DLLs in Modula-2 as my environment / compiler had no visual GUI support. The GUI part was then done in VB6.
I wrote a generic Quicksort for any type were the parameters were source & destination and a compare procedure.
You could then sort arrays, DB records or data in files (the destination being a new file), or create an index table, all according to the functionality of the Compare passed as a parameter.
There may be more to it, it was 30 years ago!
I did also use C++ from 1987, a more elegant syntax for declaring and using objects (also possible in Modula-2 as it could have private member functions), but otherwise inferior PURELY due to the AT&T insistence on C backward compatibility. If I had a fiver for every C++ program I've debugged that was really a C program with maybe an occasional "object" badly implemented.
Nice that Scripting languages have caught up with mid 1970s computer science.
Modula-2 was good also for writing device drivers even on Win32 as the libraries had named pipes and all NT security features.