# Make typeof(T::Type) = Type{T}?

**URL:** <https://discourse.julialang.org/t/make-typeof-t-type-type-t/41333>\
**Category:** Performance\
**Tags:** question\
**Created:** [June 13, 2020, 5:26pm UTC](https://discourse.julialang.org/t/make-typeof-t-type-type-t/41333 "2020-06-13T17:26:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [June 13, 2020, 5:26pm UTC](https://discourse.julialang.org/t/make-typeof-t-type-type-t/41333/1 "2020-06-13T17:26:35Z")

</div>

Hi Julia pros,

if we use e.g. `typeof((Vector, Int, 1))` we get `Tuple{UnionAll, DataType, Int}`, which I guess is due to `typeof(Vector) = UnionAll` and the like.

Wouldn’t it be better for the compiler and hence performance if `typeof(Vector)` would return `Type{Vector}` respectively?

* * *

With it, probably also `supertype` would need to be changed, as then `supertype(Type{Vector})` maybe should return `UnionAll`, instead of the current `Any`. However this would make sense to me, as Type{WithTypeParameter} is anyhow a special feature, which is not really related to normal uses of typeparameters.
