Maybe it's because: The type checker hardcodes conversions from Array<T> to Array<U> if there is a conversion from T to U.