PL problems
Aliasing
Java type system allows subtyping through arrays which leads to the aliasing problem.
class A {
}
class B extends A {
  void bOnlyMethod() {}
}
class Main {
  public static void main(String args[]) { 
    B[] bArray = new B[10];
    A[] aArray = bArray;
    aArray[0] = new A(); // Java will crash at a runtime here
    bArray[0].bOnlyMethod();
    
    System.out.println("Done"); 
  } 
}
TypeScript allows this as well:
class A {
}
class B extends A {
    bOnlyMethod() {}
}
const bArray: B[] = [];
const aArray: A[] = bArray;
aArray[0] = new A();
bArray[0].bOnlyMethod(); // JavaScript will crash at a runtime here
console.log("Done");