Skip to content

Latest commit

 

History

History
 
 

Quest14

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Quest 14. 정적 분석: 타입스크립트와 린트 시스템

Introduction

  • 이번 퀘스트에서는 타입스크립트와 린트 시스템을 통해 코드에 대한 정적분석의 장점에 대해 알아보겠습니다.

Topics

  • Lint
    • ESLint
  • TypeScript

Resources

Checklist

  • 코드를 린팅하는 것의 장점은 무엇일까요?

일관성 유지 : 린트 규칙을 통해 모든 개발자가 동일한 코딩 규약을 따르게 됩니다. 이를 통해 코드의 일관성을 유지할 수 있습니다.

가독성 향상 : 코드 린팅은 가독성이 좋은 코드를 작성할 수 있도록 돕습니다. 예를 들어, 변수나 함수의 명칭을 일관되게 작성하도록 규칙을 설정하여 가독성을 향상시킬 수 있습니다.

버그 예방 : 린트 규칙은 잠재적인 오류나 버그를 미리 파악하여 방지하는데 도움을 줍니다. 예를 들어, 잘못된 변수 사용, 오타, 잘못된 연산 등을 미리 방지할 수 있습니다.

코드 품질 개선 : 코드 린팅은 코드의 품질을 향상시키는데 도움을 줍니다. 좋은 코드 린트 규칙은 코드의 가독성, 유지보수성, 성능, 보안 등을 향상시킵니다.

개발 생산성 향상 : 코드 린팅은 코드 리뷰에 필요한 시간과 비용을 줄이며, 개발 생산성을 향상시킵니다. 코드 린트 규칙을 자동으로 검사하므로 개발자는 규칙 위반을 줄이며 더 많은 시간을 코드 작성에 집중할 수 있습니다.

  • 린트 규칙은 어떻게 설정하는 것이 좋을까요? 너무 빡빡한 규칙과 너무 헐거운 규칙 사이에서 어떻게 밸런스를 잡아야 할까요?

밸런스 잡힌 설정 시 고려 사항

프로젝트의 요구사항 : 프로젝트의 요구사항에 따라 적절한 린트 규칙을 설정해야 합니다. 예를 들어, 프로젝트에서 코드의 가독성이 중요하다면 네이밍 규칙이나 들여쓰기 규칙에 더 엄격한 규칙을 설정할 수 있습니다.

팀의 개발 스타일 : 팀 내 개발자들이 서로 다른 스타일로 코드를 작성할 수 있기 때문에 팀의 개발 스타일을 고려하여 규칙을 설정하는 것이 좋습니다.

린트 도구의 설정 : 대부분의 린트 도구는 설정 파일을 통해 규칙을 설정할 수 있습니다. 따라서, 린트 도구의 설정 파일에서 규칙을 설정할 때 너무 빡빡하지 않고, 충분히 유연하면서도 코드 품질을 유지할 수 있도록 설정하는 것이 좋습니다.

코드 리뷰 : 코드 리뷰를 통해 개발자들이 서로의 코드를 검토하고 규칙을 준수하는지 확인할 수 있습니다. 코드 리뷰를 통해 규칙을 준수하지 않는 코드를 발견하면 해당 규칙을 개선할 수 있습니다.


  • 타입스크립트는 어떤 언어인가요?

타입스크립트(TypeScript)는 마이크로소프트에서 개발한 오픈 소스 프로그래밍 언어입니다. 자바스크립트(JavaScript)의 상위 집합 언어로, 정적 타입(Static Typing)을 지원하며, ES6(ECMAScript 2015) 이상의 기능을 모두 사용할 수 있습니다.

💡 기존의 자바스크립트 코드를 그대로 사용하면서 타입스크립트로 변환 가능

  • 타입스크립트를 사용했을 때 얻을 수 있는 장점은 무엇인가요?

정적 타입 체크 : 타입스크립트는 변수의 타입을 명시하여 컴파일러가 타입 체크를 해주기 때문에 런타임에서 발생하는 타입 에러를 사전에 방지할 수 있습니다.

코드 가이드 및 문서화 : 타입스크립트는 인터페이스와 타입 별칭 등을 사용하여 코드의 가이드와 문서화를 용이하게 할 수 있습니다.

코드 가독성 향상 : 코드에서 타입을 명시하면, 코드의 가독성이 향상되어 유지보수성이 높아집니다.

코드 예측 가능성 향상 : 정적 타입 체크로 인해 코드 예측 가능성이 향상되어 개발자가 코드를 더 안정적으로 작성할 수 있습니다.

인텔리센스 제공 : 타입스크립트는 코드 에디터에서 인텔리센스를 제공하여 개발자가 더 쉽게 코드를 작성할 수 있습니다.

대규모 프로젝트 개발 용이성 : 대규모 프로젝트에서 코드의 가독성과 유지보수성을 높일 수 있어 개발 용이성이 향상됩니다.

안정성 : 타입스크립트는 자바스크립트의 상위 집합 언어이기 때문에, 기존 자바스크립트 코드를 그대로 사용하면서 안정성을 높일 수 있습니다.

💡 타입스크립트는 대규모 프로젝트에서 많이 사용되며, 코드의 안정성과 가독성을 높일 수 있습니다.

  • 타입스크립트를 사용하면서 타입이 없는 라이브러리나 프레임워크를 사용해야 할 경우에는 어떻게 해야 할까요?

@types 패키지를 사용

  • any 타입을 남용하는 것은 왜 좋지 않을까요?

코드의 가독성과 유지보수성이 떨어지며, 타입스크립트의 장점을 활용하지 못합니다. 또한 any 타입을 사용하면 컴파일 타임에 오류를 잡지 못하기 때문에 런타임에서 예상치 못한 오류가 발생할 수 있습니다.


  • 린트와 빌드 등의 과정을 개발 싸이클에서 편하게 수행하려면 어떻게 하는 것이 좋을까요?

린트와 빌드 시 사용 도구

Webpack : 자바스크립트 애플리케이션의 빌드 프로세스를 자동화하는 도구입니다. 코드 번들링, 모듈 번들링, 자원 최적화 등의 작업을 수행할 수 있습니다.

Babel : 최신 자바스크립트 문법을 사용한 코드를 이전 버전의 자바스크립트 코드로 변환해주는 도구입니다. 이를 통해 브라우저 호환성 문제를 해결할 수 있습니다.

ESLint : 코드를 린팅하여 일관된 코드 스타일과 오류를 방지할 수 있는 도구입니다. 개발자가 작성한 코드를 저장소에 커밋하기 전에 자동으로 린팅을 수행할 수 있습니다.

Prettier : 코드 포맷팅을 자동화하여 일관된 코드 스타일을 유지할 수 있는 도구입니다. 코드 저장 시 자동으로 코드 스타일을 정리해주므로 개발자가 일일히 정리할 필요가 없습니다.


Quest

  • 메모장 시스템에 린트 시스템을 적용해 보세요.
  • 메모장 시스템을 타입스크립트 기반으로 수정해 보세요.
  • package.json 파일의 scripts 항목을 이용하여 린트와 빌드 등의 작업을 스크립트화 해 보세요.

Advanced

  • 자바스크립트 코드에 대한 정적분석은 어떤 과정을 통해 이루어질까요?
    • 이러한 정적분석을 수행해 주는 핵심 역할을 하는 npm 패키지는 어떤 것이 있을까요?