# Table, Record, Map, Arraybetween casts
- table as the parent type of the above three types, the Map<?> type can be used to initialize the record type
Both types are exactly the same
================== ============================================== ======================
Left-hand type Right-hand type Acceptable
table record true
table Map<T> true
table Array<T> true
record table true
record Map<T> true
record Array<T> false
record Other record false
Map<T1> table true
Map<T1> record false
Map<T1> Empty Map<object> true
Map<T1> Map<T2 where T2 extends T1> true
Map<T1> Map<T2 where T1 extends T2> false
Map<T1> Array<?> false
Array<T1> table true
Array<T1> Empty Map<object> true
Array<T1> record false
Array<T1> Array<T2 where T2 extends T1> true
Array<T1> Array<T2 where T1 extends T2> false
Array<T1> Map<?> false
================== ============================================== ======================