15.1 타입 호환이란?


타입 호환: 서로 다른 타입이 2개 있을 때 특정 타입이 다른 타입에 포함되는지를 의미

let a: string = "hi";
let b: number = 10;
b = a;

🚨 이렇게 작성을 하면 다음과 같은 에러가 발생…

Untitled

→ 문자열 타입은 숫자 타입에 할당할 수 없음을 뜻함

하지만 타입스크립트가 아닌 자바스크립트 코드였다면 별도의 에러가 표시되지 않음

WHY???

자바스크립트는 미리 변수의 타입을 정하지 않아도 실행하는 시점에 적절한 타입으로 변환해 주기 때문

그렇다면 호환되는 경우를 살펴보자

let a: string = "hi";
let b: "hi" = "hi";
a = b;

error 발생하지 않음

error 발생하지 않음

b 변수에는 문자열 타입보다 좀 더 구체적인 ‘hi’ 문자열 타입을 지정함

b 변수는 문자열 중에서도 hi 문자열만 취급함

위에서 처럼 b 변수를 a 변수에 할당했을 때 별도의 타입 에러가 발생하지 않았으므로 ab 타입은 서로 호환되었다고 볼 수 있음

WHY?? : string 타입이 ‘hi’ 타입보다 더 큰 타입이고 string 타입이 ‘hi’를 포함할 수 있는 관계이기 때문