Strictly speaking, you may not omit the of.
It is not true that the argument is the type: it is an instance of the type, or an example of the type, or a member of the type. It is this sense of membership which is expressed by of.
In speech or non-formal writing you can get away with omitting of in very simple constructions like this, where you just give the name of the type—A is type B. But with more complex constructions you cannot, even in informal contexts; you need of and a determiner:
∗It expects the parameter to be type not yet defined.
OKIt expects the parameter to be of a type not yet defined.
∗It expects the parameter to be type we encountered in section 3.4.
OKIt expects the parameter to be of the type we encountered in section 3.4.
When you're writing stuff like this you're probably using a fairly formal register. So why burden yourself with learning a different pattern for informal registers and having to decide each time how formal the immediate situation is and which one you should use? Use the formal construction all the time and you won't be wrong.