If you find yourself writing user-space code that uses "_{data type}" you are doing something wrong. That implementation detail is not something that is exposed to the user. If you want to deal with arrays of a type you say: {data type}[]
So casting some random text column to an array of operation is simply:
operation_text_col::operation[]
And you can get rid of the above CREATE TYPE command altogether.