A guard is not quite the same thing as a type declaration; guards are optional and can specify constraints.
守卫与类型声明并不完全相同；守卫是可选的，可以指定约束。