I agree with the other posters, that this is a great example of poor database design...
A few points to back this up:
1) The queries needed to pull data from this 'generic' table match based on a string value; this is far slower than using an int.
2) If, as the author suggests, a typical db has 20-50 lookup tables, this single-table approach will soon get extremely cumbersome and slow... Imagine how many records will be in this table, and how often it will be hit.
3) Related to point 1), joins to this table will also be slow, as the primary key is likely to be a composite.
4) Jst nitpicking here, but what kind of silly naming convention for the column names (int, str, etc...) is that? It may be good practice in regular programming, but in a Db this is totally unneccessary.
There are several other issues, but I will limit myself, as this idea was clearly not properly thought out....