타입 추론

woodstock·2023년 12월 11일
0
post-thumbnail

타입 추론이란

타입스크립트는 타입이 정의되어 있지 않는 변수의 타입을 자동으로 추론하는데, 이런 기능을 타입 추론이라고 한다.

이처럼 타입스크립트는 모든 변수에 일일이 타입을 정의하지 않아도 되는 편리함을 제공하지만, 모든 상황에서 타입을 잘 추론하는 것은 아니다.

예를들면, 다음과 같이 함수의 매개변수 타입은 자동으로 추론할 수 없다.

이렇게 타입 추론이 불가능한 변수에는 암묵적으로 any타입이 추론되는데
만약 엄격한 타입 검사 모드(tsconfig.json의 strict 옵션을 true로 설정)라면, 이러한 암시적 any타입의 추론을 오류로 판단하게 된다.

타입 추론이 가능한 상황들

1. 변수 선언

일반적인 변수 선언의 경우 초기값을 기준으로 타입이 잘 추론된다.

let a = 10;
let b = "hello";
let c = {
  id: 1,
  name: "woodstock",
  profile: {
    nickname: "woody",
  },
  urls: ["https://velog.io/@orodae"],
};


2. 구조 분해 할당

객체와 배열을 구조 분해 할당하는 상황에서도 잘 추론된다.

let c = {
  id: 1,
  name: "woodstock",
  profile: {
    nickname: "woody",
  },
  urls: ["https://velog.io/@orodae"],
};

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타입으로 추론된다.

그리고 이 변수에 값을 할당하면 그 다음 라인부터 any타입이 해당 값의 타입으로 변화한다.


2. const 상수의 추론

const로 선언된 상수도 타입 추론이 진행된다.
그러나 let으로 선언한 변수와는 다른 방식으로 추론된다.


최적 공통 타입(Best Common Type)

다음과 같이 다양한 타입의 요소를 담은 배열을 변수의 초기값으로 설정하면, 최적의 공통타입으로 추론된다.

profile
해내는 사람

0개의 댓글