'typealias' is not for defining new type but calling a type different names. Therefore, TypeA and TypeB names refer to and is replaced by the same type namely SomeType.
Having said that, You may do
type SomeType{T}
value::Int
end
Then, you can use typealias TypeA and TypeB as
typealias TypeA SomeType{:A}
typealias TypeB SomeType{:B}
You can have functions with SomeType{T} in general. When "A" or "B" is needed I
guess you can use string(T) to get that.
