타입스크립트는 모든 변수에 일일이 타입을 정의하지 않아도 되는 편리함을 제공한다.

그러나 모든 상황에서 타입을 잘 추론하는 것은 아니다.

이렇게 타입 추론이 불가능한 변수에는 암묵적으로 any타입이 추론되는데, 만약 엄격한 타입 검사 모드라면 이러한 암시적 any타입의 추론을 오류로 판단하게 된다.
타입 추론이 가능한 상황
상황 1: 변수 선언
일반적인 변수 선언의 경우 초기값을 기준으로 타입이 잘 추론된다.
let a = 10;
let b = "hello";
let c = {
id: 1,
name: "devmark",
profile: {
nickname: "고견",
},
urls: ["https://devmark.tistory.com/"],
};

상황 2: 구조 분해 할당
객체와 배열을 구조 분해 할당하는 상황에서도 잘 추론된다.
let c = {
id: 1,
name: "devmark",
profile: {
nickname: "고견",
},
urls: ["https://devmark.tistory.com/"],
};
let { id, name, profile } = c;
let [one, two, three] = [1, "hello", true];
상황 3: 함수의 반환값
함수 반환값의 타입은 return문을 기준으로 잘 추론된다.
function func() {
return "hello";
}

상황 4: 기본값이 설정된 매개변수
기본값이 설정된 매개변수의 타입은 기본값을 기준으로 추론된다.
function func(message = "hello") {
return "hello";
}

주의해야 할 상황
상황 1: 암시적인 any 타입 추론
변수를 선언할 때 초기값을 설정하지 않으면 암시적으로 any타입으로 추론된다.

이후 이 변수에 값을 할당하면, 그때부터 타입이 해당 값의 타입으로 진화(evolve)한다.

그러나 이는 타입 안정성을 해치므로, 가능한 한 초기값과 함께 선언하거나 명시적으로 타입을 지정하는 것이 좋다.
상황 2: const 상수의 추론
const로 선언된 상수도 타입 추론이 진행된다. 그러나 let으로 선언한 변수와는 다른 방식으로 추론된다.

const는 재할당이 불가능하므로, 타입스크립트는 더 구체적인 리터럴 타입으로 추론한다. 이는 타입 안정성을 높이는 데 도움이 된다.
최적 공통 타입 (Best Common Type)
여러 타입의 값이 섞인 배열의 경우, 타입스크립트는 최적 공통 타입을 추론한다.

배열 내의 모든 요소 타입을 포함할 수 있는 유니온 타입으로 추론된다.
참고: 타입 추론이 모호하거나 의도와 다르게 추론되는 경우, 명시적으로 타입을 지정하는 것이 더 안전하다.
'TIL' 카테고리의 다른 글
| 구조 분해 할당 (0) | 2025.10.31 |
|---|---|
| [TS] 타입 추론 및 타입 정의 연습 (0) | 2025.10.31 |
| [TS] 대수 타입 (0) | 2025.10.31 |
| [TS] void와 never (0) | 2025.10.28 |
| [TS] any와 unknown (0) | 2025.10.28 |
