However I would say it is usually bad practice to access language internals that way. If you need these types somewhere, the better way would be to get them via dispatch:
function f(m::MyType{S,T}) where {S,T}
# do something with S or T
end
The “typical” way to extract these values is with functions like the following:
typeS(::Type{<:MyType{S,T}}) where {S,T} = S
typeT(::Type{<:MyType{S,T}}) where {S,T} = T
Internals like <type>.parameters are allowed to change in the future, so be warned that implementations using them may require revision in a later version.