What are the restrictions of metadata in Angular?

In Angular, the users must write metadata with the following general constraints,

  1. Write expression syntax with in the supported range of JavaScript features.
  2. The compiler can only reference symbols which are exported.
  3. Only call the functions supported by the compiler.
  4. Decorated and data-bound class members must be public.