1) 여러 타입으로 타입정의하고 값 제한하기- Union Type
타입스크립트는 기존의 타입들을 이용해 새로운 타입을 정의하고 구성하는 방법을 제공합니다.
새로운 타입을 재구성하는 방식으로는 Union과 Generic 방식 두가지를 제공합니다.
이번시간에는 Union에 대해서만 다루고 다른섹션에서 Generic에 대해 다루겠습니다.
Union은 타입이 여러 타입 중 하나일 수 있음을 선언하는 방법으로 하나의 변수에 여러타입을 지정할수 있습니다.
let productCode: string | number;
예제 코드처럼 | 문자를 이용해 여러 타입을 반복지정 가능합니다.
D:\TypeScript\2-TS-Basic 폴더내에 type-union.ts파일을 생성 합니다.
A) UnionType 예시코드 코딩하고 실행하기
-하기 코드와 같이 코딩을 진행합니다.
-자세한 내용은 주석을 참고바랍니다.
-type-union.ts
-코딩을 모두 진행 저장하고 아래 명령어를 통해 터미널창에서 ts파일을 컴파일하고 컴파일 결과.js파일을 실행합니다.
D:\TypeScript\2-TS-Basic
tsc --strictNullChecks type-union.ts
node type-union.js
// Union 타입 예제
//productCode 변수에 문자열과 숫자 타입 2개 타입을 동시에 지정합니다.
let productCode: string | number = "10000";
productCode = 20000;
console.log("productCode===>", productCode);
productCode = "P-20000";
console.log("productCode===>", productCode);
//함수에 유니온 타입 지정하기
function getCode(code: number | string): string {
if (typeof code === "number") {
code = "P-" + code.toString();
}
return code;
}
console.log("getCode:", getCode(1000));
console.log("getCode:", getCode("P-2000"));
//두번쨰 예시..
function getProductCode(pcode: string | number): void {
if (typeof pcode === "string") {
console.log(`문자열값: ${pcode}`);
} else if (typeof pcode === "number") {
console.log(`숫자형값: ${pcode}`);
}
}
console.log("getProductCode:", getProductCode("PID-1000"));
console.log("getProductCode:", getProductCode("1000"));
//배열내에 여러 데이터 유형을 할당하고 해당 배열의 타입을 Union타입으로 정의할수 있습니다.
const userData: (string | number | boolean)[] = ["홍길동2", 40, false]; //Union Type
console.log(
`${userData[0]} 님은 ${userData[1]}살이고 ${
userData[2] == true ? "기혼" : "미혼"
} 입니다.`
);
//Union 타입을 이용해 타입의 특정값만을 지정할수 있습니다.
//Enum(열거형) 타입과 유사하게 특정값만을 지정할수 있습니다.
type ProcessStates = "open" | "closed";
let state: ProcessStates = "open";
console.log("state:", state);
type OddNumbersUnderTen = 1 | 3 | 5 | 7 | 9;
let oddNumber: OddNumbersUnderTen = 3;
console.log("oddNumber:", oddNumber);
//컴파일 및 실행 명령어
//tsc --strictNullChecks type-union.ts
//node type-union.js
B)코딩 핵심 내용 설명
-union을 이용하면 변수에 여러타입을 지정할수 있습니다.
-배열내 여러 타입의 값을 담을수도 있습니다.
-추후배울 type alias에 여러값을 할당할수 있습니다.
-유니온 타입에 특정 값들을 설정해 변수의 갑을 지정된 값들로 제한하는 기능도 제공한다.
(Enum열거형 타입과 동일기능제공 )