본문 바로가기

TypeScript

타입의 호환성 - 기본 타입

두 가지 다른 타입 A와 B에 대해, 모든 A 타입의 값을 B 타입의 값으로도 취급할 수 있는가?


    type OneDigitOdd = 1 | 3 | 5 | 7 | 9;
    const three: OneDigitOdd = 3;
    const num: number = three;

위의 코드는 `number` 타입의 값에 `OneDigitOdd` 타입의 값을 할당한다. 이 때, `OneDigitOdd` 타입이 가질 수 있는 값인 `1, 3, 5, 7, 9` 는 모두 `number` 에 속한다. `OneDigitOdd` 타입의 모든 값이 number 타입의 값이기도 하므로 위의 코드는 오류 없이 실행 된다. 즉, `OneDigitOdd` 타입은 `number` 타입에 할당 가능(assignable)하다.

반면 아래의 코드를 보자.

    const four: number = 4;
    const oneDigitOdd: OneDigitOdd = four; 
    // error TS2322: Type 'number' is not assignable to type 'OneDigitOdd'.

`number` 타입은 `1, 3, 5, 7, 9` 이외의 다른 값 또한 가질 수 있다. 예를 들어, `const four: number = 4`는 `OneDigitOdd` 타입의 값으로 허용되지 않는다. `number` 타입의 값이지만 `OneDigitOdd` 값으로 취급할 수 없는 값이 존재하므로, `number` 타입은 `OneDigitOdd` 타입에 할당 불가능하다.

'TypeScript' 카테고리의 다른 글

타입의 호환성 - 함수 타입  (0) 2019.10.30
타입의 호환성 - 객체 타입  (0) 2019.10.30
인터페이스와 클래스의 관계  (0) 2019.10.30
추상 클래스  (0) 2019.10.30
클래스 - 심화 - 접근자  (0) 2019.10.30