type MyString = String
type MyString2 = String {tomo: 123}
type StringOrNumber = String | Number
type NumberOrString = Number | String
type A = "A"
type B = "B"
type a = "A"

type ArrayString = Array<String>
type ArrayNumber= Array<Number>

---
{
    a: typeOf("test") == String, //true
    b: typeOf("test") == MyString, //true
    c: typeOf("test") == MyString2, //false
    d: typeOf("test" as MyString2)  == MyString2, //true
    e: typeOf("test" as StringOrNumber)  == String, //false true
    f: typeOf(1 as StringOrNumber)  == Number, //false false
    j: typeOf(1 as NumberOrString)  == Number, //false false
    g: typeOf("test" as StringOrNumber)  == StringOrNumber, //true false
    h: typeOf("test") == StringOrNumber, //false false
    i: StringOrNumber == typeOf("test"), //false false
    k: typeOf([]) == Array,
    l: A == B,
    m: A == a,
    n: ArrayString == ArrayString,
    o: ArrayString == ArrayNumber,

}