TS, 너가 뭐 그리 잘났어?

박재훈·2021년 10월 19일
0
post-thumbnail


필자는 프론트엔드를 공부하며, 처음으로 javascript를 접했고, 프론트엔드 개발자로 성장하면서도 javascript를 애용하였다.
react 라이브러리를 활용하여 나름 여러가지 개발을 해보았고, 개발도중 필요성을 직접적으로 느껴 redux, styled-components같은 라이브러리를 공부하여 다양한 프로젝트를 진행하였다.

그렇게 3학년이 되었고, 어느새 취업을 준비해야하는 시기가 되었다. 원티드를 통해 많은 회사들을 찾아보며 다양한 회사에서 요구하는 여러가지 기술스택을 접하게 되었고, 그 중 공통적으로 많은 회사들에서 typescript를 이용하고 있는 것을 알게되었다.

당장 취업을 준비해야 했던 나는, 그렇게 처음으로, 남들이 많이 사용하니까, 회사에서 요구하니까 라는 이유로 typescript를 공부하게 되었다.

처음 접한 typescript는 정말 귀찮았다.
모든 변수에 type을 지정해줘야 했고, 함수의 파라미터, 리턴 값, 심지어 api의 response 값에도 type을 작성해야하니 정말 번거롭게 느껴졌다.
기술의 장점을 모르고 사용해서일까?
typescript를 사용하고 개발 속도가 향상되었다는 느낌을 전혀 받지 못했다....

그렇게 한동안 typescipt에 대한 관심이 떨어지고 있을 때, 나는 우연히 한가지 에러를 만나게 되었다.

아쉽지만 당시 에러의 사진을 찍어두지는 못했으나, 정말 단순한 타입에러였다.
정말 단순한 타입에러도 복잡한 로직 속에 있으니 찾는데 쉽지 않았고,
30분 뒤, 에러를 발견했을 땐 정말 허탈함만 가득했다.

다시는 이런 간단한 문제에 삽질하고 싶지 않았다.
그래서 오랫동안 잊어두었던, typescript를 다시 한 번 꺼내게 되었다.
그리고 이번에는 typescript의 장점을 정확히 알고 살리고 싶었다.
때문에 난 사내에서 지원하는 개발문화 중 하나인 개발 도장에 수련을 신청하게 되었고

사내 스터디 문화인 개발 도장

이번엔 그 시작으로, typescript의 장점, 정적 타이핑만의 장점을 확실히 정리하고 가려 한다.

정적 타이핑 지원

정적 타이핑을 지원한다..... 즉 삽질 시간을 굉장히 줄여준다는 의미이다.
동적 타이핑 언어인 javascript에서는 자료형을 런타임에서 정하기에 런타임에서 예상치 못한 에러를 마주할 수 있지만,
typescript는 컴파일 단계에서 이 에러를 발견할 수 있다는 것이다.
때문에 문제를 초기에 발견할 수 있고, 아까 필자가 겪었던 오류를 굉장히 쉽게 찾을 수 있다는 것이다.

코드의 높은 안정성

type을 지정할 수 있다는 것은 자연스럽게 프로그램에 논리 구조가 생기며, 이렇게 생긴 논리 구조는
잘못된 표현식을 사용하는 프로그램을 런타임 이전에 찾아낼 수 있다는 것이다.
그리고 이 말은 즉 입 시스템을 통과한 프로그램은 런타임에서 타입 에러가 절대 발생하지 않는다

뭐 이 정도의 내용은 typescript를 써보거나, 관심있던 사람이라면 충분히 알고 있을 법한 내용이다.
지금부터는 조금 특별한 typescript만의 장점을 이야기하겠다.

백엔드와 프론트엔드 통합

백엔드와 프론트엔드 모두 typescript를 사용하게 된다면 우리는 상상 이상의 엄청난 효과를 거둘 수 있다.
프론트와 백엔드 간의 데이터 포맷은 수 없이 바뀌는데, 이로인해 수 많은 커뮤니케이션 로스를 발생시킬 수 있다....

typescript에서는 프론트엔드와 백엔드간의 데이터 포맷을 타입으로 정의하여, 이를 양측에서 공통으로 참조하도록 구현하고, 데이터 포맷의 변경 사항이 발생할 경우 이렇게 공용화된 타입의 정의부를 수정함에 따라 프론트엔드와 백엔드 코드에 컴파일 에러를 발생시킴으로써 데이터 포맷의 통일을 강제하기 때문이다.
(실제로 어떤 식으로 데이터 포맷을 공유하는지는 아직 의문점이다.)

with VSCode

많은 개발자들이 유용하게 사용하는 에디터인 vscode와, typescript는 모두 microsoft에서 제작하였다.
이 말은 즉슨, TypeScript로 상상할 수 있는 모든 개발환경을 너무나 쉽게 구축 가능하다는 것을 의미한다.
뿐만 아니라 코드 피드백도 끝내주게 해주기에 더 쉽게 오류를 찾을 수 있다.


이 얼마나 멋진가.....!

결론

물론 typescript라고 완벽한 언어는 아니다. 여러가지 단점이 존재하는 것도 분명하고,
javascript보다 높은 난이도를 갖고있다.
하지만 분명히, typescipt만의 강력한 능력은 매력적인 요소이고,
이는 큰 프로젝트에서 더 많은 영향을 줄 것이다.
아직 필자도 typescript를 제대로 사용한 경험이 부족하기에, 조금 더 공부하며 지식을 공유하도록 하겠다.

profile
개발자를 꿈꾸는 고등학생의 블로그입니다.

0개의 댓글