728x90
반응형
타입 추론(Type Inference)
타입 추론이란 타입스크립트가 코드를 해석해 나가는 동작을 의미합니다.
아래의 코드로 예시를 들어보겠습니다.
let x = 3;
위와 같이 x에 대한 타입을 지정하지 않더라도 x는 number로 간주됩니다. 이렇게 변수를 선언하거나 초기화 할 때 타입이 추론됩니다. 이외에도 변수, 속성, 인자의 기본 값, 함수의 반환 값 등을 설정할 때 타입 추론이 일어납니다.
가장 적절한 타입(Best Common Type)
타입은 보통 몇 개의 코드를 바탕으로 추론됩니다. 그 표현식을 이용하여 가장 근접한 타입을 추론하게 되는데 이를 Best Common Type이라고 합니다.
let arr = [0,1,null];
위 변수 arr의 타입을 추론하기 위해서는 배열의 각 아이템을 살펴봐야 합니다. 배열의 각 아이템의 타입은 크게 number와 null로 구분됩니다. 이 때 Best Common Type 알고리즘으로 다른 타입들과 가장 호환되는 타입을 선정합니다.
문맥상의 타이핑(Contextual Typing)
타입스크립트에서 타입을 추론하는 또 하나의 방식은 바로 문맥상으로 타입을 결정하는 것입니다. 이 문맥상의 타이핑은 코드의 위치를 기준으로 일어납니다.
예시 1
window.onmousedown = function(mouseEvent){
console.log(mouseEvent.button); //Ok
console.log(mouseEvent.kangaroo) //Error
}
위 코드를 보면 window.onmousedonw에 할당되는 함수의 타입을 추론하기 위해 window.onmousedown 타입을 검사합니다. 타입 검사가 끝나고 나면 함수의 타입이 마우스 이벤트와 연관이 있다고 추론하기 때문에 mouseEvent 인자에 button 속성은 있지만 kangaroo 속성은 없다고 결론을 내립니다.
예시 2
window.onscroll = function(uiEvent){
console.log(uiEvent.button) //Error
}
앞의 예제와 마찬가지로 함수의 인자 uiEvent는 UIEvent로 간주되고 button 속성이 없다고 추론합니다.
728x90
반응형
'프론트엔드 스터디 > Typescript' 카테고리의 다른 글
[TypeScript] 타입 가드(Type Guard) (0) | 2021.07.21 |
---|---|
[TypeScript] 기초 - 타입 앨리어스(Type Alias) (0) | 2021.07.21 |
[TypeScript] 기초 - 제네릭(Generic) (0) | 2021.07.21 |
[TypeScript] 기초 - 교차 타입(Intersection Type) (0) | 2021.07.21 |
[TypeScript] 기초 - 유니온 타입(Union Type) (0) | 2021.07.21 |