정적 타이핑(Static typing)
let a = 5;
a = 'hell0';
이런 코드가 있다고 가정했을때 자바스크립트에서는 에러가 발생하지 않고 a라는 변수에는 문자열 'hello'가 재할당 됩니다.
하지만 타입스크립트라면 에러를 발생시키는데요.
처음에 선언한 a를 number 타입인 5로 초기화 해주었기 때문에 타입스크립트에서는 a는 number타입이라고 타입을 추론하게 됩니다.
그렇기 때문에 컴파일 시키기 위해 tsc 명령을 사용해도 컴파일 되지 않습니다.
컴파일 시키게 되면 이와 같은 에러가 발생합니다.
이 에러는 스트링 타입은 넘버타입에 들어갈수 없다는 의미의 에러인데
let a = 5;
a = 10;
이처럼 a에 숫자를 대입하게 되면 에러가 사라지는것을 볼수 있습니다.
이처럼 타입을 명시하지 않아도 타입스크립트는 선언된 변수의 초기값으로 인해 변수의 타입을 추론하게 됩니다.
이 것을 타입추론 이라고 합니다.
즉, 타입스크립트는 타입 표기가 없을 경우 코드를 읽고 분석하여 타입을 유추해낼수 있는 것입니다.
다른 예시를 보겠습니다.
let student = {
name: 'Cine',
course: 'Start TypeScript',
IQ: 100,
code: function () {
console.log('hello, world!');
}
}
student라는 객체가 있습니다.
타입스크립트는 객체속의 property의 할당값을 검사하고 타입을 추론해냅니다.
// student.name = 10; // error
student객체에 있는 name 프로퍼티를 숫자로 재할당 하려고 할경우 에러가 발생하게 되는것이죠.
function calculateIQ(lostPoints: any): number{
return 100 - lostPoints;
}
함수도 마찬가지 입니다.
calculateIQ라는 함수를 만들었을때 calculateIQ라는 함수의 리턴타입을 100 - lostPoints를 통해 number라고 추론하게됩니다.
lostPoints의 타입을 모르는데도 말이죠!
해당 코드의 경우 lostPoints의 타입을 명시하지 않으면 에러가 발생하긴합니다만 any라는 타입을 명시하게 된다 하더라도 calculateIQ의 리턴타입은 number로 추론하게 됩니다.
'TS 관련 > TypeScript' 카테고리의 다른 글
[TypeScript] Readonly(읽기전용) 속성 (0) | 2022.07.14 |
---|---|
[TypeScript] 타입으로 사용되는 인터페이스(Interface) (0) | 2022.07.13 |
[TypeScript] 타입스크립트의 타입(Type)과 타입 명시 (1) | 2022.07.11 |
[TypeScript] 타입스크립트 설치하기 (0) | 2022.07.08 |
[TypeScript] 타입스크립트란? (1) | 2022.07.07 |