reflect-metadata Allows you to do runtime reflection on types.
The native (non reflect-metadata) version of type inference is much poorer than reflect-metadata and consists only of typeof and instanceof.
More
This blog post covers its features well : http://blog.wolksoftware.com/decorators-metadata-reflection-in-typescript-from-novice-to-expert-part-4