A type code is the only mechanism used in pre-Mac OS X versions of the Macintosh operating system to denote a file's format, in a manner similar to file extensions in other operating systems. Codes are four-byte OSTypes. For example, the type code for a HyperCard stack is STAK; the type code of any application program is APPL.
Mac OS X retains type codes, but supports filename extensions as well. The deprecation of type codes (and creator codes) over the older extension system, popularised by PDP-11 systems (RT-11, RSX-11, etc.), CP/M, and most recently by Microsoft's DOS, has been very controversial with Mac users. The type and creator system is considerably richer and more sophisticated than that provided by extensions, and many users felt that adopting DOS conventions is a backward step. They claim that type and creator information rightfully belongs to the metadata associated with a file, and is therefore illogically placed within the file's name, where its presence can cause problems for the user. Apple defends the decision by saying that extensions have become the de facto standard for indicating file type, and they need to work seamlessly with the rest of the industry.
Type codes are not readily accessible for users to manipulate, although they can be viewed and changed with certain software, most notably the Mac OS X command line tools GetFileInfo and SetFile which are installed as part of the developer tools into /Developer/Tools, or the ResEdit utility available for older Macs.
Changes done in Mac OS X v10.4 with the addition of Uniform Type Identifiers suggest that Apple heard those criticisms and is working on a file type successor to both type code and filename extensions.