SW/TypeScript

TypeScript : Type Inference : 타입 추론 개념, 예제, 설명

얇은생각 2023. 4. 4. 07:30
반응형

타입 추론

지금까지 사용한 타입 애너테이션이 대부분의 경우는 필요 없다는 사실에 대해 알려드리려고 합니다. 애너테이션은 타입과 구문의 기초를 배울 때는 좋은 도구이지만 실제로 변수를 작성할 때는 타입 추론(Inference)을 사용하면 됩니다.

 

TypeScript : Type Inference : 타입 추론 개념, 예제, 설명

 

 

TypeScript는 꽤 똑똑하기 때문에 변수 선언을 보면 어떤 값에 할당되는지 파악합니다. 지금 보시는 경우에는 27이 x에 할당되었는데 TypeScript은 이를 보고 27이 숫자이기 때문에 x가 숫자 타입이라는 걸 추론합니다. 그러고 나서 x 값에 숫자가 아닌 문자열이나 불리언 타입을 넣으면 오류라고 표시합니다.

 

// Type Inference
let tvShow = "Olive Kitteridge";
tvShow = "The Other Two";
tvShow = false;

let isFunny = false;
isFunny = true;
isFunny = "asd";

 

이를 토대로 전에 작성한 코드를 보면 movieTitle은 쓸데없이 많이 문자열이라고 할당한 거죠 TypeScript이 추론할 수 있습니다. string이라고 타입을 지정하지 않아도 됩니다. 그럼 타입 추론을 한번 활용해 보죠 tvShow를 "Olive Kitteridge"라는 문자열과 같다고 가정합니다.

본론으로 돌아가서 tvShow 변수에 마우스를 올리면 문자열이라는 걸 콜론(:)으로 애너테이션을 설정한 것과 동일하게 알려줍니다. 시간과 노력을 덜 들였는데 결과는 같습니다. 하지만 이 경우에 문자열 타입 정의를 위해서는 이렇게만 적으셔도 TypeScript이 추론할 수 있습니다.

다른 문자열을 넣어서 바꿔보아도 문제 없습니다. 불리언 값인 false는 문제가 생깁니다. 불리언 값은 문자열 타입으로 할당할 수 없으니 오류가 발생합니다.

변수 isFunny에 불리언 값으로 false를 할당해 봅니다. 이제 변수에 마우스를 올려보면 TypeScript이 변수가 불리언 타입임을 추론하고 있습니다. 다른 불리언 값인 true로 바꿀 수 있지만 다른 타입은 불가능합니다.

정리하면 TypeScript은 할당된 변수를 토대로 타입을 추론할 수 있습니다. 하지만 애너테이션으로 타입을 직접 할당해야 하는 경우도 존재합니다. 변수가 문자열이 아니라 문자열 배열 타입이라고 하는 것입니다. 다만, 아직 강의에서 나온 적이 없고 쓸 일이 많이 없습니다.

반응형