[TS] 타입 추론

TIL

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

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

이렇게 타입 추론이 불가능한 변수에는 암묵적으로 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
'TIL' 카테고리의 다른 글
  • 구조 분해 할당
  • [TS] 타입 추론 및 타입 정의 연습
  • [TS] 대수 타입
  • [TS] void와 never
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    typescript
    generic
    자료구조
    앱 라우터
    CS
    알고리즘
    함수 타입
    Pages Router
    Next.js
    Trouble Shooting
    emotion diary
    제네릭
    인터페이스
    클래스
    배열
    ai 감성 일기장
    javascript
    memory
    타입 좁히기
    C
    문자열
    페이지 라우터
    cs50
    algorithm
    Spa
    바닐라 자바스크립트
    트러블 슈팅
    App Router
    react
    useState
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 타입 추론
상단으로

티스토리툴바