# Choice of type parameters

**URL:** https://discourse.julialang.org/t/choice-of-type-parameters/115147
**Category:** General Usage
**Tags:** function-parameters
**Created:** [June 4, 2024, 2:57am UTC](https://discourse.julialang.org/t/choice-of-type-parameters/115147 "2024-06-04T02:57:04Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![freedomjin](https://avatars.discourse-cdn.com/v4/letter/f/f4b2a3/32.png) [@freedomjin](https://discourse.julialang.org/u/freedomjin)
#### Post date: [June 4, 2024, 2:57am UTC](https://discourse.julialang.org/t/choice-of-type-parameters/115147/1 "2024-06-04T02:57:04Z")

</div>

Hi, I am a little confused about choice of type parameters either as data types or as literals, and would like to know their differences?

More specifically, when defining a parametric type, which takes, say, some integer value as some type of static `size` parameter, like those in `StaticArrays`, the type parameter sometimes was chosen as some `N::Int`, other times as `Tuple{N}`, where the former is an integer and latter a `DataType` parameter that contains an integer, which contains the same unique info.

Another case is the choice of `S::Symbol` vs `Val{S::Symbol}` as type parameter, where the former is a symbol and latter a `DataType` which contains a symbol.

What’s the difference between these choices? Does one have any advantage over the other?
