JavaScript types and combinators