자바스크립트에서는 아래 예제에서 처럼 a변수에 string 값인 "hello"로 재할당 하려하면 문제없이 재할당 가능합니다.
let a = 10;
a = "hello"
하지만 타입스크립트에서는 Type 'string' is not assignable to type 'number'.
에러가 발생합니다. 컴파일을 시도해도 에러 메시지가 발생합니다.
에러의 의미는 재할당하려는 변수값이 숫자가 아니기 때문에 a 변수에 할당될수 없다 라는 내용입니다.
이러한 현상이 나타나는 이유는 타입스크립트의 타입 추론때문입니다.
타입스크립트에서는 타입 표기가 없는경우 타입 정보를 제공하기위해서 타입을 추론합니다.
즉 타입스크립트는 타입 표기가 없는 경우 코드를 읽고 분석하여 타입을 유추해낼수 있습니다.
student라는 오브젝트 객체가 있습니다. 타입스크립트는 먼저 프로퍼티의 할당값을 검사하고 어떤 타입이 프로퍼티의 할당값으로 주어졌는지 스스로 추론하였습니다.
아래는 타입이 다르기때문에 에러가 발생합니다.
let student = {
name: "joon",
codingLevel: 10,
code: function () {
console.log("코딩 공부중입니다.");
},
};
student.name = 10;
student.codingLevel = "오"
두번째 예제입니다.
마우스를 함수키워드 위로 가져가면 타입스크립트가 함수의 return 값으로 number를 할당하였습니다.
이것은 num 타입을 명시하지 않았지만 타입스크립트는 - 연산자를 통해서 결과물 즉 return 값이 숫자일거라는 추론을합니다.
function calcuIQ(num: any): number
function calcuIQ(num) {
return 100 - num;
}