why use "be of something", is there some meaning for this "of"?

I saw a sentence when reading some technical articles:

When we call this function, it expects the second parameter to be of type Collection. The actual argument is of type Collection.

So my question is why use "of" in this sentence? Does it change some meaning for this sentence? Can I delete the "of" and directly say, "The actual argument is type Collection"?


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.