TValue
ist auf jeden Fall die deutlich modernere Variante (dafür teilweise recht
RTTI lastig). Ich persönlich würde die Verwendung beider Datentypen allerdings so gut wie möglich vermeiden/einschränken. In einer streng typisierten Sprache machen solche Konstrukte nur bedingt Sinn (es gibt durchaus einige valide Anwendungsfälle, aber das ist die Ausnahme).