What I want to do
I have a schema similar to this:
User.departments: [uid] @reverse .
type User {
    User.departments: [Department]
}
type Department {
    <~User.departments>: [User]
}
I want to strictly type the UIDs entered into User.departments so that it only accepts nodes of type Department. However, upon trying to test the schema, I am able to put all types of nodes into the User.departments predicate (i.e., nodes which are not of the Department type).
What I did
Example using JSON mutation format:
  {
    uid: '0x1',
    'dgraph.type': ['Department'],
  },
  {
    uid: '0x2',
    'dgraph.type': ['DefinitelyNotADepartment'],
  },
  {
    uid: '_:user',
    'User.departments': [
      {
        uid: '0x1',
      },
      {
        uid: '0x2',
      },
    ],
    'dgraph.type': ['User'],
  }
Dgraph accepts these values, and when queried, it returns:
{ uid: '0xd', departments: [ { uid: '0x1' }, { uid: '0x2' } ] }
Is this natural behavior? Should I instead implement a function to verify the type before adding it to the predicate? Thank you very much!
Dgraph metadata
dgraph version
Dgraph version   : v21.12.0
Dgraph codename  : zion
Dgraph SHA-256   : 078c75df9fa1057447c8c8afc10ea57cb0a29dfb22f9e61d8c334882b4b4eb37
Commit SHA-1     : d62ed5f15
Commit timestamp : 2021-12-02 21:20:09 +0530
Branch           : HEAD
Go version       : go1.17.3
jemalloc enabled : true