Is it possible to define index on type level?

They both have their strong points. But FYI, a GraphQL schema will generate a matching DQL schema. It all depends on your use case. If you are going to use the GraphQL endpoint, then you have to use the GraphQL schema. Now you can even then, modify the DQL schema to add things such as facets or linking different predicates together and using the @dgraph directive in the GraphQL schema. I really recommend you following the link I posted here above to get an overall foundation to how what and why all of this.