타입스크립트 시작 전 생각 정리

Jaejun Kim·2023년 1월 9일

니꼬쌤 무료강의를 듣고 typescript를 시작하기로 했다.

typescript에 대해 몰랐기 때문에 예전부터 스스로 해왔던 질문을 떠올렸다.

왜 typescript를 써야할까?
현업에서 쓰니까? 그럼 만약 나 혼자 프로젝트를 만든다면 나는 typescript를 쓰지 않게될까?

왜 타입이 중요할까?

타입 안정성이 중요한 이유는?

니꼬쌤의 첫 강의는 이에 대한 해답이 들어있었다.

자바스크립트는 생각보다 더 미친 언어였다.

console.log([1,2,3,4] + false)

// JS: '1,2,3,4false' 

// TS: Operator '+' cannot be applied to types 'number[]' and 'boolean'.(2365)

function divine(a,b) {
  return a / b
}
divine("hello")

// JS: NaN 

// TS: Expected 2 arguments, but got 1.

이정도일줄은 몰랐지.

  1. 입력값을 하나만 보냈고
  2. 입력값이 숫자도 아니었는데

이래도 에러를 안뱉다니 미친건가?

근데 이건 약과라고 한다.

가장 최악의 경우는 런타임 에러라는데..

런타임 에러는 구체적으로는 코드를 실행시켜야 나는 에러를 뜻한다. .
그냥 자바스크립트만 써봤던 나로서는 조금 당연하게 생각했던 부분인데 사실 아니었나보다.

실행을 안시켜도 실수를 잡아주는게 가능하다니!

const jaejun  = {
    nickname: "kim"
}
console.log(jaejun.hello())

// JS: 런타임 에러(미리 잡지 못하고 실행을 해봐야 알게되는 에러라는 뜻)

// TS: Property 'hello' does not exist on type '{ nickname: string; }'.(2339)

이 코드가 실행이 되기 전까진 자바스크립트는 에러를 뱉지 않을 것이다 웹서버 만들면서 많이 겪어본 문제기도 하다.

만약 웹서버를 만든 상황이고 내 restAPI에 이런 코드가 있다면 웹서버는 무리없이 실행이 될 것이다. API요청을 받아 코드를 실행시키기 전까지는 그 코드가 어떤 문제가 있는지 전혀 알 수 없었다.

하지만 typescript는 그런 상황을 어느정도 방지할 수 있다고 한다. js파일로 컴파일을 하는 과정, 아니 그 이전부터 오류를 잡아서 오류를 고치기 전까지는 컴파일조차 되지 않는다고 하니까..

ts뿐만 아니라 대부분의 좋은 프로그래밍 언어는 객체를 분석해서 hello() 라는 메서드가 객체에 없다는 사실을 알려준다고 한다. 음...

열심히 배우자!

0개의 댓글