타입 추론

정민교·2023년 10월 12일
0

typescript

목록 보기
5/17

📒타입 추론

타입스크립트는 변수에 타입을 지정하지 않으면 초기화 값을 기준으로 변수 타입을 추론합니다.

이를 타입 추론 이라고 합니다.

let a = 10;
// number 타입으로 추론

하지만 모든 상황에서 타입 추론이 가능한 것은 아닙니다.

📒타입 추론이 가능한 상황

✔️변수 선언

변수 선언 시 초기값을 기준으로 변수 타입을 추론합니다.

let a = 10;
// number 타입으로 추론

let b = "hello";
// string 타입으로 추론

let c = {
  id: 1,
  name: "정민교",
  profile: {
    nickname: "...",
  },
  urls: ["https://..."],
};
// id, name, profile, urls 프로퍼티가 있는 객체 타입으로 추론

다양한 타입의 요소를 담은 배열을 초기값으로 설정하면 최적의 공통타입으로 추론합니다.

let arr = [1, "string"];
// (string | number)[] 타입으로 추론

✔️const 상수의 리터럴 타입 추론

const로 선언한 상수는 대입한 리터럴 값으로 타입이 추론됩니다.

const num = 10;
// 10 Number Literal 타입으로 추론

const str = "hello";
// "hello" String Literal 타입으로 추론
let arr = [1, "string"];
// (string | number)[] 타입으로 추론

✔️구조 분해 할당

객체와 배열 구조분해 할당 시에도 정상적으로 타입 추론이 동작합니다.

let { id, name, profile } = c;

let [one, two, three] = [1, "hello", true];

✔️함수 반환값

return 문 기준으로 함수 반환값의 타입을 추론합니다.

function func() {
  return "hello";
}
// 반환값이 string 타입으로 추론된다

✔️기본값이 설정된 매개변수

기본값이 설정된 매개변수는 기본값 기준으로 타입이 추론됩니다.

function func(message = "hello") {
  return "hello";
}

📒타입 추론이 안되는 상황

✔️암시적 any 타입 추론

변수를 선언할 때 초기화를 진행하지 않고 선언만 한다면 이 변수는 암묵적으로 any 타입으로 추론됩니다.

let d;
// 암시적인 any 타입으로 추론

재미있는 점은 이렇게 암묵적으로 any 타입으로 추론된 변수는 값을 할당할 때마다 값의 타입이 변화한다는 점입니다.

let d;
d = 10; // number 타입
d.toFixed();

d = "hello"; // string 타입
d.toUpperCase(); 
d.toFixed(); // 오류 

profile
백엔드 개발자

0개의 댓글