https://ncatlab.org/nlab/show/type+theory
The simplest intuition for types is that they are sets of values.
The type Bool (remember, concrete types start with a capital letter in Haskell) is a two-element set of True and False. Type Char is a set of all Unicode characters.
Sets can be finite or infinite. The type of String, which is a synonym for a list of Char, is an example of an infinite set.
https://www.youtube.com/watch?v=QRrcwahx-3s
https://langdev.stackexchange.com/questions/2692/how-should-i-read-type-system-notation
https://github.com/williamdemeo/TypeFunc
https://www.youtube.com/watch?v=bmKYiUOEo2A