- 이번 퀘스트에서는 타입스크립트와 린트 시스템을 통해 코드에 대한 정적분석의 장점에 대해 알아보겠습니다.
- Lint
- ESLint
- TypeScript
- 코드를 린팅하는 것의 장점은 무엇일까요?
ESLint과 같은 정적탐색장치를 통해 코드를 분석한다는 것은, 코드를 컴파일링 및 실행하기 이전에 미리 디버깅을 한다는 의미이다.
실행을 하기 전에 코드를 분석한다는 것은, 다시 말하면 실행이 되더라도 별도의 요구사항이 충족되었는지 확인하고 이를 개발 단계에서 발견하고자 하는 목적을 지닌다.
정적탐색대상을 세부적으로 나타내면 다음과 같다. → 요구사항 누락 : 고려하지 못한 부분이 있는가 → 요구사항 오해/오류 : 기대하지 않거나, 의미없는(여분의) 동작이 발생하는가 → 오류처리 누락 : 예외처리를 누락하였는가 → 이외 여러 코딩 실수 등 이 외 동적탐색보다 적은 resource가 소모될 수 있고, 실행이전에 오류를 파악하여 빠른 수정이 가능하다는 장점이 있다.
- 린트 규칙은 어떻게 설정하는 것이 좋을까요? 너무 빡빡한 규칙과 너무 헐거운 규칙 사이에서 어떻게 밸런스를 잡아야 할까요?
규모가 큰 곳에서는 여러 개발자가 있고, 그만큼 많은 branch가 존재한다.
이러한 branch를 가장 효율적으로 관리하기 위해 적당한 규칙을 만들기 위해서는 코딩을 진행하는 환경, 개발자들의 성향 등 고려해야하는 부분이 너무 많다.
결국은 ESLint도 협업이다.
즉 팀원들 간의 협의를 통해 코드의 규칙과 어떤 부분을 적용해야 하는 지 등을 결정해야 한다.
- 린트와 빌드 등의 과정을 개발 싸이클에서 편하게 수행하려면 어떻게 하는 것이 좋을까요?
Prettier와 같이 별도의 확장팩을 설치하여 코드를 저장할때마다 자동으로 Lint검사를 실시하도록 설정해줄 수 있다. Prettier와 같이 별도의 확장팩을 설치하여 코드를 저장할때마다 자동으로 Lint검사를 실시하도록 설정해줄 수 있다.
- 타입스크립트는 어떤 언어인가요?
Javascript에 type을 지정해준 언어이다.각 변수마다 data : string / Block / number 등 구체적인 자료형을 정의해준다.
- 타입스크립트를 사용했을 때 얻을 수 있는 장점은 무엇인가요?
타입스크립트는 컴파일 과정에서 오류를 탐색하는 정적 타입의 언어이다.
따라서 오류를 이른 시점에서 체크할 수 있고, 더불어 자료형을 구체적으로 지정해주므로(type) 실행속도가 매우 빠르다는 장점을 지닌다.
이러한 생산적인 오류 탐색 및 실행속도의 장점말고도 여러 이유로 타입스크립트 사용한다.
→ javascript와 100% 호환가능하므로, 확장 관점에서 용이하다. → VSCode와 같은 에디터 및 여러 라이브러리/프레임워크가 타입스크립트를 지원한다. → 프로젝트 규모가 커질 수록 타입스크립트의 장점을 많이 활용할 수 있다.
- 타입스크립트를 사용하면서 타입이 없는 라이브러리나 프레임워크를 사용해야 할 경우에는 어떻게 해야 할까요?
타입스크립트 자체가 javascript를 지원하기 때문에, 두 파일의 상호작용 자체는 문제가 되지 않는다.
즉 라이브러리가 타입스크립트를 지원하지 않는다 해서 모든 파일을 자바스크립트로 바꿀 필요없이, 해당 지원이 안되는 부분만 javascript를 사용해도 무방하다.
이러한 문제가 아니라 단순히 확장자, 파일명의 문제라면 .js 를 .ts 로 바꿔주면 된다.
- any 타입을 남용하는 것은 왜 좋지 않을까요?
타입스크립트는 각 자료형을 구체적으로 지정해주는데 의미가 있는 언어이다.
any를 남용하게되면 타입스크립트를 사용하는 의미가 없어지게 되고, 그만큼 이점을 활용하기 힘들어진다.
- 메모장 시스템에 린트 시스템을 적용해 보세요.
- 메모장 시스템을 타입스크립트 기반으로 수정해 보세요.
package.json
파일의scripts
항목을 이용하여 린트와 빌드 등의 작업을 스크립트화 해 보세요.
- 자바스크립트 코드에 대한 정적분석은 어떤 과정을 통해 이루어질까요?
- 이러한 정적분석을 수행해 주는 핵심 역할을 하는 npm 패키지는 어떤 것이 있을까요?