配列を共用体型で入力して、1つの配列にAppleとOrangesの両方を含めることができ、それ以外は何も含めることができないかどうか疑問に思っていました。
何かのようなもの
var arr : (Apple|Orange)[] = [];
arr.Push(Apple); //ok
arr.Push(orange); //ok
arr.Push(1); //error
arr.Push("abc"); // error
言うまでもなく、上記の例は機能しないため、これは不可能な場合がありますか、それとも何かが足りませんか?
class Apple {
appleFoo: any;
}
class Orange {
orangeFoo: any;
}
var arr : Array<Apple|Orange> = [];
var Apple = new Apple();
var orange = new Orange();
arr.Push(Apple); //ok
arr.Push(orange); //ok
arr.Push(1); //error
arr.Push("abc"); // error
var something = arr[0];
if(something instanceof Apple) {
something.appleFoo; //ok
something.orangeFoo; //error
} else if(something instanceof Orange) {
something.appleFoo; //error
something.orangeFoo; //ok
}