TypeScript 타입 추론

버터·2025년 6월 2일

타입 추론

명시적으로 타입을 지정하지 않아도 타입스크립트가 코드를 해석해서 적절한 타입을 자동으로 정의한다.

1. 변수의 타입 추론

  • 할당된 값과 일치하는 타입으로 추론된다.
  • 선언만 된 상태라면 any 타입으로 추론된다.
    • any 타입으로 추론된 이후에 값을 할당해도 타입은 변경되지 않고 여전히 any 타입이다.
    • 선언 시점을 기반으로 추론한다.
(() => {
  // 기본 데이터 타입의 변수 타입을 추론에 의지(권장)
  let name = "이일구"; // string으로 타입 추론
  // name = 219;

  const age = 20; // number로 타입 추론

  let name2; // any로 타입 추론
  name2 = "이일구";
  name2 = 219;

  console.log(name, age, name2);
})();

2. 객체의 타입 추론

객체를 선언과 동시에 초기화할 때 타입을 명시하지 않으면 객체 내부의 속성과 속성값에 맞춰서 타입을 자동으로 정의한다.

  • 문자열 값을 가진 속성이라면 string 타입
  • 숫자값을 가진 속성이라면 number 타입
(() => {
  // 객체가 초기화 될 때 속성값에 맞춰서 타입 추론
  // const todo1 = {
  //   id: 12, // FIXME id의 타입을 string, number 둘 다 가능하게 하고 싶음
  //   title: "타입 추론",
  //   content: "타입스크립트가 코드를 분석해서 적절한 타입을 자동으로 지정",
  // };
  // todo1.done = true;
  // todo1.id = "12";

  interface Todo {
    id: string | number;
    title: string;
    content: string;
  }

  const todo2: Todo = {
    id: 13,
    title: "할일 13",
    content: "내용 13",
  };

  todo2.id = "13";
})();

3. 함수의 타입 추론

  • 매개 변수의 타입
    • 매개 변수에 타입을 지정하지 않으면 any 타입이 된다.
    • 기본값 매개 변수를 지정했을 경우 할당된 값과 일치하는 타입으로 추론하고 ? (옵셔널 매개변수)를 추가한다.
  • 리턴 타입
    • 리턴 값을 기반으로 추론한다.
    • 매개 변수가 리턴 값에 영향을 미치면 매개 변수의 타입과 연산자를 기반으로 리턴 값의 타입을 추론한다.
(() => {
  // 매개변수의 타입을 지정하지 않으면 num은 암묵적으로 any 타입이 됨.
  function add10(num: number) {
    return num + 10;
  }
  const result = add10(99.8756);
  console.log(result.toFixed(1));

  // 타입을 생략하고 기본값을 지정하면 기본값의 타입을 따라가도록 타입 추론하고 옵셔널 매개변수(?) 추가
  // 리턴 타입을 생략하면 리턴값의 타입을 따라가도록 타입 추론(number + 20 = number)
  function add20(num = 0) {
    return num + 20;
  }
  const result2 = add20(100.12345);
  console.log(result2.toFixed(2));
})();
profile
프론트엔드 개발자를 꿈꾸는 (구)퍼블리셔

0개의 댓글