Understanding type comparison of collection types

An illustrative example:

var array: [Int] = []
if Int.random(in: 0...1000) == 0 { // simulating some rare app condition
    array.append(42)
}
let strings = array as! [String] // all good most of the time
// crash once in a while
  1. what bad would it make if we disallow such a cast?
  2. if we were to disallow it could we do it easily or is it a too complicated change?
  3. should we disallow it?

I'd say if there are no issues in (1) and we can do it (2) then we should do it (3).