타입스크립트 - 타입 추론(Type Inference)
· 약 2분
목적
TS 타입 추론(Type Inference), 정리 및 복습
1. 타입추론 이란?
정적타입 언어를 사용할 때 단점은 타입을 정의하는데 시간과 노력이 많이 필요해서 생산성이 저하될 수 있다.
TS의 경우 다양한 경우에 대해 타입추론을 제공하기 때문에 꼭 필요한 경우에만 타입을 정의할 수 있다.
// Type Inference
let abc = "abc"; // string
let number = 2; // number
// abc = 123; // Error
// number = "abcd"; // Error
const n1 = 123; // number
const n2 = "123"; // string
const array2 = [1, 2, 3]; // Array
const [x1, x2, x3] = array2; // Array
// array2.push('a'); // Error
const obj = { numId: 1, stringId: "1" };
const { numId, stringId } = obj;
console.log("👉👉 obj", numId === stringId); // Error
2. 함수의 타입추론
함수에서는 파라미터와, 함수의 타입도 추론이 가능하다
// 함수의 타입 추론
const func1 = (a = 1, b = "b") => {
return `${a}, ${b}`;
};
// const test_ = func1(3, 5); // Error 타입추론으로 파라미터 b의 타입은 string 이기 때문.
// const test_2: number = func1(3, 5); // Error 타입추론으로 string을 return하기 때문.
// vv 여기서 return 값이 number | string 을 추론 하고있음.
const func2 = (value: number) => {
if (value < 10) {
return value;
} else {
return `${value} is big`;
}
};
const teste1 = func2(9);
console.log("👉👉 teste1", teste1);
const teste2 = func2(11);
// const teste2 = func2("11"); // Error 파라미터에서 받는 값이 number이기 때문에 에러 발생
다만 함수에 default를 지정했을 경우, 타입이 지정된 것으로 간주해 다른 타입의 데이터가 들어오면 에러를 발생시킨다.
최종 정리
- 타입추론은 타입스크립트가 코드를 해석해나가는 동작을 의미
- 타입을 정의하는데 시간과 노력이 많이 필요해서 생산성이 저하
- 다양한 경우에 대해 타입추론을 제공하기 때문에 필요한 경우에만 타입을 정의할 수 있다.
