내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-08-27 05:38

제목

[TypeScript] 배열 / null, underfined, void, never / 열거형


04. 배열
let a = [123];  // number 타입 배열
let b = ['a''b'];  // string 타입 배열
let cArr: string[] = ['a'];  // string 타입 배열
let d = [1'a'];  // string 타입 또는 number 타입 배열
 
b.push('bbb');
//b.push(true);  <- 오류
d.push('ccc');
d.push(222);
//d.push(true);  <- 오류
 
d.map(_ => {
    if(typeof _ === 'number') {
        console.log(`${_}값의 타입은 number 입니다.`);
    }
    else {
        console.log(`${_}값의 타입은 string 입니다.`);
    }
});
cs


05. null, underfined, void, never

undefined : 아직 정의되지 않음
null : 값이 없음
void : 아무것도 반환하지 않음
never : 절대 반환하지 않음 (항상 예외발생, 영원히 계속 실행)

※ 엄격한 null 확인
예전 버전의 타입스크립트(또는 TSC의 strictNullChecks 옵션을 false로 설정)에서는  null이 조금 다르게 동작한다.
이때 null은 never를 제외한 모든 타입의 하위 타입이다.
즉, 모든 타입은 null이 될 수 있으므로 모든 값이 null인지 아닌지를 먼저 확인하지 않고는
타입이 무엇이라고 단정할 수 없다.
예를 들어 pizza가 null인지 확인한 다음에 그 동작을 수행할 수 있다.
이 때문에 예상치 않은 상황에서 값이 null이라면 런타임에 치명적인 널 포인터 예외가 발생한다.

// number | null 반환 함수
function aFun(x:number) {
    if(x < 10) {
        return x;
    }
    return null;
}
 
// undefined 반환 함수
function bFun() {
    return undefined;
}
 
// never 반환 함수 01
function cFun() {
    throw TypeError('I always error');;
}
 
// never 반환 함수 02
function dFun() {
    while(true) {
        // TODO : doSomething();
    }
}
 
// void 반환 함수
function eFUn() {
    let aa = 2 + 2;
    let bb = aa * aa;
}
cs


06. 열거형

enum Language {
    English = 100,
    Spanish = 200 + 300,
    Russian  // 타입스크립트가 500 다음 숫자인 501로 추론
}
 
// 열거형에 문자열 값을 사용하거나 문자열과 숫자 값을 혼합할 수 있다.
enum Color {
    Red = '#C10000',
    Blue = '#0007AC1',
    Pink = '0xc10050',  // 16진수 리터럴
    White = 255  // 10진수 리터럴
}
cs


출처1

출처2