ecoEarth 2023. 1. 17. 18:11

기본 타입 추론

정적타입언어를 사용할때의 단점은 타입을 정할때의 시간과 노력이 소비된다는 점이다.

하지만, 타입스크립트는 타입을 추론할 수 있도록 도와주므로 개발자가 필요한 경우에만 타입을 정의할 수 있다.

let a = 123;
let b = 'abc';

a = 'abc'; // Error
b = 123; // Error

a에는 number타입이, b에는 string타입이 할당되었다. 그러므로 다음부터의 할당에서 a에서는 number타입만, b에서는 string타입만 선언되도록 해주는 것이 바로 타입 추론이다.

 

const c1 = 123;
const c2 = 'abc';

 

const는 let보다 더욱 타입이 엄격하게 적용된다.

let에서는 a에서는 number타입만, b에서는 string타입만 선언되도록 해주었지만, const에서는 c1에는 123만, c2에서는 'abc'만 할당되도록 추론해준다.

 

const arr = [1, 2, 3];
const [n1, n2, n3] = arr;
arr.push('a'); // Argument of type 'string' is not assignable to parameter of type 'number'

const obj = { numId: 1, stringId: '1' };
const { numId, stringId } = obj;
console.log(numId === stringId); // This comparison appears to be unintentional because the types 'number' and 'string' have no overlap

함수 타입 추론

const func1 = (a = 'a', b = 1) => {
  return `${a} ${b};`;
};
func1(3, 6);

const v1: number = func1('a', 1);

const func2 = (value: number) => {
  if (value < 10) {
    return value;
  } else {
    return `${value} is big`;
  }
};