
Crystal Programming
By :

Crystal is a statically typed language; the compiler knows the types of every variable and expression before execution. This enables several correctness checks on your code, such as validating that the invoked methods exist and that the passed arguments match the signature, or ensuring that you are not trying to access nil properties.
A single type isn't enough in every situation: a single variable can be reassigned to values of different types, and thus the type of the variable can be any of the types of each value. This can be expressed with a union type, a type made from joining all the possible types. With it, the compiler knows that the variable can hold a value from any of those types at runtime.
You can use the typeof(x)
operator to discover the type of any expression or variable as seen by the compiler. It might be a union of multiple types. You can also use x.class
to discover the runtime type of a value; it will never be a union. Finally...