반응형
TypeScript에서 조합 유형을 사용하여 배열을 입력하시겠습니까?
단지 하나의 배열로 사과와 오렌지를 모두 담을 수 있도록 조합형으로 배열하는 것이 가능한지 궁금했을 뿐이다.
뭐랄까
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
}
TS 2.3.4에 따르면 다음과 같이 간단하다.
let someArray: (typeA|typeB)[] = [
new typeA(),
new typeB()
]
참조URL: https://stackoverflow.com/questions/29794014/typing-an-array-with-a-union-type-in-typescript
반응형
'Programing' 카테고리의 다른 글
MD 크기의 장치에 대해서만 요소 표시 (0) | 2022.03.21 |
---|---|
변수가 python 2 및 3과 호환되는 문자열인지 확인하는 방법 (0) | 2022.03.21 |
TypeError: method()는 1개의 위치 인수를 사용하지만 2개가 지정됨 (0) | 2022.03.21 |
Vue momentjs 타임스탬프에서 실시간으로 상대 시간 업데이트 (0) | 2022.03.21 |
Vue.js에서 생성된 이벤트와 마운트된 이벤트 간의 차이 (0) | 2022.03.21 |