Разве это не должно потерпеть неудачу?
class Animal { }
class Person { }
type MyUnion = Number | Person;
var list: Array<MyUnion> = [ "aaa", 2, new Animal() ]; // Shouldn't this fail?
var x: MyUnion = "jjj"; // Shouldn't this fail?
Есть ли способ принудительно проверить тип в этом случае?