교육/원티드 프리온보딩 챌린지

[원티드 프리온보딩 챌린지 2월] Week 1-1 Document for TypeScript - 강의 후기

알파카털파카 2023. 2. 6. 23:21

Week 1-1 Document for TypeScript

Documentation, JSDoc, Declaration, Implements

 

 

1월 챌린지를 듣고 프로그램 구성이나 강의가 마음에 들어서, 원티드에서 진행하는 강의는 믿고 신청하게 되었다.

2월 챌린지의 주제는 타입스크립트였다. 프로젝트에서 타입스크립트를 사용하고 있지만, 아직 스스로의 지식이 겉핥기 수준에 머무는 듯 해서 이번 기회에 집중적으로 학습해보고자 하는 각오로 시작했다. 

 

 


 

 

1. TypeScript 소개

타입스크립트 = JS + TS 문법 (syntax)

 

타입스크립트와 vs code 모두 마이크로소프트가 개발했다.

마이크로소프트가 vs code라는 IDE를 직접 만든 이유는 타입스크립트를 전파하기 위해서이다.

생각해보지 못한 내용이라 발표일을 찾아보니 📅 타입스크립트는 2012년 10 1, 📅 vs code는 2015년 4 29일이었다. 타입스크립트가 생각보다 오래된 언어라 놀라웠다.

 

자바스크립트와의 호환성

vs code는 타입스크립트와 일렉트론으로 만들었기 때문에, 타입스크립트는 IDE와 통합되어 오류를 캐치하기 쉽다. 

타입스크립트가 JS와 높은 호환성을 가지는 이유는 유저가 사용하고 있는 서비스를 계속 사용할 수 있게 하기 위함이다. 타입스크립트를 도입했을 때 기존의 서비스를 사용하지 못하게 된다면 TS를 사용하는데 큰 불편함이 생길 것이다. 마이크로소프트는 타입스크립트가 널리 사용되도록 만들기 위해 여러 방면으로 신경썼음을 알 수 있었다. 심지어 마이크로소프트는 npm과 github도 인수했다. 이것도 모르고 있던 사실이었다. 마이크로소프트의 힘이란..

 

인터페이스 vs 타입 별칭

인터페이스는 객체처럼 { } 로 선언한다.

타입은 변수처럼 = 을 사용해 할당하며, 필요한 것을 다 집어넣을 수 있다.

 

d.TS

TS = JS + d.TS

d = declare

d.TS 파일에는 구현부가 빠져있다.(선언부만 선언)

https://joshua1988.github.io/ts/usage/declaration.html

 

// @ts-check 를 js 파일에 추가하면 편집기에 오류가 표시된다.

타입스크립트를 컴파일하면 타입 구문이 날아가기 때문에, 타입 가드가 필요하다.

 

 

 

 

2. 선언과 구현의 차이 이해하기

💡 선 타입 후 구현을 해보자

선언과 구현의 차이

// 1. 함수 선언
function func() {
  // 2. 함수 구현
}

// 3. 함수 사용
func();

상황에 따라 다르지만 TS는 주로 1번, 선언에서 사용된다.

타입스크립트로 프로젝트를 구현할 때 일단 로직을 다 짜놓고 타입을 끼워넣는 경우가 많을 것이라고 말씀하셨는데, 먼저 타입을 선언해놓고 그 후에 구현을 해보는 식으로 연습하면 좋다고 알려주셨다.

선언과 구현이라는 키워드도 설명을 듣고 나면 아는 내용인데 막상 설명하라고 하면 막혀서 이번에 잘 알아둬야겠다. 선언과 구현은 로직의 유무로도 구분할 수 있다.

 

 

 

 

3. JS와 TS

타입 추론

void 는 리턴 타입이 없음을 의미한다.

그렇다면 void는 TS문법일까, JS문법일까? ✅ TS 문법이다.

void는 JS에도 있을까? ✅ JS에도 있지만 TS와 다르다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/void

 

JS에도 있고, TS에도 있는 것

몇 가지가 있다.

타입가드 관련된 것 - typeof, instanseof 도 해당된다.

JS에는 privateField, TS에는 private가 있다. 둘은 같은 역할을 한다. 

문제가 되는 이유는 자바스크립트에 없어서 타입스크립트에서 구현한 것이 나중에 자바스크립트에 추가되었기 때문이다.

 

⚠️ 팀에서 겪을 수 있는 문제

🤔 privateField vs private

🤔 interface vs type

어떤 것이 좋다고 주장하고 설득하려면 논리가 있어야 한다. 

이런 문제에 부딪혔을 때 참고하면 좋은 사이트를 알려주셨다.

https://www.typescriptlang.org/docs/handbook/classes.html#ecmascript-private-fields

https://stackoverflow.com/questions/59641564/what-are-the-differences-between-the-private-keyword-and-private-fields-in-types

 

웹 표준을 지켜야 하는 이유

웹 표준을 지켜야 하는 이유는 모든 브라우저에서 사용하기 위해, 사용자에게 동일한 UX를 제공하기 위해서이다.

 

타입 선언 

타입을 다는 것이 어렵다면 참고하기 좋은 사이트이다.

https://github.com/typescript-cheatsheets/react

🚨 breaking change는 버전이 바뀌면서 호환이 안 되는 내용을 담고있기에 조심해야 한다. 동기화를 잘 해야 프로젝트가 터지는 것을 방지할 수 있다.

 

 

 

 

4. 취업 Q&A

여러가지 Q&A 질문 답변이 진행되었다. 멘토님께서 본인의 경험을 담아 차분하고 깔끔하게 설명해 주셔서 도움이 많이 되었다. 신입, 주니어 개발자들이 겪는 어려움과 고민, 궁금한 점이 비슷하기도 했고, 각자의 상황에 따라서 다른 것도 있었다. 몇 가지 특히 기억에 남는 부분만 적어본다.

 

회사에서 어려운 상황을 겪을 때, 이직을 준비해야 할까?

어려운 상황에서도 내가 할 수 있는 것을 찾고 일을 만들어내서 정의하고 그것을 창출하는 사람으로 진화하도록 노력해야한다.

 

힘들고 어려우면 동기부여가 떨어지고 지쳐서 포기하고 싶어질 때도 있는데 그런 상황을 이겨내지 못하면 어디서든 도망만 다니는 사람이 된다. 나도 여러가지 직무를 겪어보고 나에게 맞는 직업이 무엇일지 탐색하는 과정을 또래에 비해 길게 보냈다. 그래서 개발자를 준비하는 지금이 더이상 도망칠 곳 없고 정면승부를 해야 하는 시기라고 생각하고 임하고 있다. 원티드 프리온보딩 인턴십 과정 중에서도 리덕스를 사용해 프로젝트를 진행하는 것이 어려웠지만, 리드미/깃허브 위키/리팩토링 작업 등 내가 할 수 있는 것을 찾아 하려고 노력했다. 회사에서도, 인생에서도 이런 자세를 갖추고 임하면 어디서든 인정받는 사람이 될 것이다. 마음에 새겨야겠다.

 

자소서에 작성해야 할 내용

자소서에 들어가야할 내용으로는 다음과 같은 내용이 들어있으면 된다고 하셨다.

나는 어떤 개발자입니다.
나는 어떤 것을 선호하는 개발자입니다.
나는 어떤 것을 잘하는 개발자입니다.
나는 어떤 것을 경험해 본 개발자입니다.

 

클래식하게 기본에 충실한 자소서의 모습이 아닐까? 막상 저런 내용을 담아내려고 해도 자신에 대한 깊은 성찰이 진행되지 않으면 은근 답하기 어려운 내용이다. 자기객관화를 꾸준히 해야겠다.

 

성장

성장 중독

 

재미있는 표현이었다. 내가 본 개발자 분들은 다들 성장에 미쳐있는(?) 사람이었다. 나도 자기계발과 성장을 좋아하긴 하지만, 감탄이 나올 정도로 열심히 하시는 분들이 다른 직군보다 많아보였다. 그런 분들이 글도 많이 쓰시고 기록으로 남겨서 남들과 지식공유를 하는 것도 즐기시기 때문에 더 많아보이는 것일지 모른다. 내가 개발을 시작하고 놀랐던 문화가 바로 이 '지식공유' 문화였다. 오픈소스 프로젝트나 pr, 이슈 등을 사용해 모르는 사람들과도 생각을 나누고 지식을 나누는 문화가 좋은 의미로 충격이었다. 본인의 자랑스런 코드를 혼자만 간직하는 것이 아니라 남들과 나누다니.. 참 멋진 문화다.