반응형
1. 타입 추론의 기본
let x = 3;
위와 같이 x에 대한 타입을 따로 지정하지 않더라도 일단 x는 number로 간주됩니다. 이렇게 변수를 선언하거나 초기화할 때 타입이 추론됩니다. 이외에도 변수, 속성, 인자의 기본 값, 함수의 반환 값 등을 설정할 때 타입 추론이 일어납니다.
2. 인터페이스와 제네릭을 이용한 타입 추론 방식
interface Dropdown<T> {
value: T;
title: string;
}
var items: Dropdown<number> = {
value: 10,
title: "a",
};
인터페이스 Dropdown의 value는 타입파라미터를 참조하고 있고 실제 타입 파라미터에는 number을 넘겨주고 있기 때문에 value의 타입은 number로 추론되고 있습니다.
3. 복잡한 구조에서의 타입 추론 방식
interface Dropdown<T> {
value: T;
title: string;
}
interface DetailedDropdown<K> extends Dropdown<K> {
description: string;
tag: K;
}
var detailItems: DetailedDropdown<number> = {
value: "hi", //error
title: "a",
description: "b",
tag: "c", //error
};
DetailedDropdown의 타입 파라미터로 number를 넘겼고 해당 타입 파라미터는 DetailedDropdown의 tag와 Dropdown의 value까지 전달되어 value와 tag의 타입의 number로 추론되는 것을 볼 수 있습니다.
4. Best Common Type추론 방식
타입은 보통 몇 개의 표현식(코드)을 바탕으로 타입을 추론합니다. 그리고 그 표현식을 이용하여 가장 근접한 타입을 추론하게 되는데 이 가장 근접한 타입을 Best Common Type이라고 합니다.
let arr = [0, 1, null]; //let arr: (number | null)[]
위 변수 arr의 타입을 추론하기 위해서는 배열의 각 아이템을 살펴봐야 합니다. 배열의 각 아이템의 타입은 크게 number와 null로 구분됩니다. 이때 Best Common Type 알고리즘으로 다른 타입들과 가장 잘 호환되는 타입을 선정합니다.
쉽게 얘기하면 가장 근접한 타입으로 추론한다는 것이고 사실상 유니온으로 묶어간다고 생각하면 됩니다.
반응형
'기억보단 기록을 > Typescript' 카테고리의 다른 글
[Typescript] Section 11. 유틸리티 타입 (0) | 2023.05.21 |
---|---|
[Typescript] generic의 extends와 intreface의 extends의 차이 (0) | 2023.05.20 |
[Typescript] Section 09. 제네릭 (0) | 2023.05.20 |
[Typescript] Section 08. Class (0) | 2023.05.20 |
[Typescript] Section 07. Enum (0) | 2023.05.20 |