TypeScript

[TypeScript] Type Inferences

Dongi 2022. 1. 10. 13:38

안녕하세요 동기 여러분! 오늘은 타입스크립트의 타입 추론에 대해 알아봅시다!

 

Type Inferences

타입스크립트는 자바스크립트의 주요 데이터 타입인 불린(Boolean), 숫자(Number), 눌(Null), 문자(String), 언디파인드(Undefined)를 알아차리는 능력이 있습니다.

 


 

오류를 찾아주는 고마운 친구 타입스크립트

아래의 타입스크립트 코드를 보겠습니다.

 

TypeScript

let dongi = 'dongi'

dongi = 3;
  • dongi라는 변수에 'dongi'라는 문자를 넣고 아래에 dongi라는 변수에 숫자를 넣으면 타입스크립트에서는 아래와 같이 오류가 있다고 알려줍니다.

  • "타입 '숫자'는 '문자'에 선언할 수 없다."라고 친절히 알려줍니다.

 

 


 

자바스크립트의 버그를 알려주는 고마운 친구 타입스크립트

아래의 자바스크립트 코드를 보겠습니다.

 

JavaScript

const a = 5;
const b = '4';

console.log(a * b);
  • a에 5라는 숫자(Number) 타입을 선언하고 b에는 '4'라는 문자(String) 타입을 선언했습니다.
  • 그리고 a와 b를 곱하여 출력하는 출력문을 만들어 실행하면 아래와 같은 어이없는 결과가 나타납니다.

  • 뭐지? 20이 나왔습니다. 이게 왜 어이가 없냐면 파이썬으로 한번 알아봅시다.

파이썬 코드입니다.

  • 그렇습니다. 문자 '4'가 5번 곱해진다면 5개의 4가 출력돼야 정상인 것이죠.

 

타입스크립트에서는 이 어이없는 결과(20이 나온 결과가 버그입니다.)를 미리 알려줍니다.

아래의 코드를 타입스크립트에 넣고 자바스크립트 코드로 컴파일링을 하면 ( tsc 파일명 )

 

TypeScript 

const a = 5;
const b = '4';

console.log(a * b);

  • 위 스크린샷과 같이 에러가 발생합니다. 
  • 에러 내용을 해석하자면 ' 오른쪽 사이드에 있는 연산 작동(b)은 반드시 any나 숫자, bigint나 enum타입이어야 한다. '

 


 

오늘의 느낌

요즘 할말이 없습니다. 캐나다는 코로나가 다시 엄청 심해져서 밖에 나갈 엄두를 못내다 보니 그냥 공부하고 밥먹고 맨몸 운동하고 그게 끝입니다. ㅠㅠ 너무 똑같은 일상의 반복