An expressive type annotation specification for JS applications