[JS] JSDoc 가이드

[JS] JSDoc 가이드

JSDoc: JavaScript 문서화를 위한 강력한 도구 📚💻


1. JSDoc이란 무엇인가? 🤔

JSDoc은 JavaScript 코드에 주석을 추가해 자동으로 문서를 생성할 수 있도록 도와주는 도구이다. 함수, 클래스, 변수 등 코드의 각 요소에 대한 설명과 타입 정보를 제공하고, 이를 기반으로 읽기 쉬운 HTML 문서를 만들어준다.

🎯 JSDoc의 주요 목적

  • 코드 가독성 향상: 팀원이나 후임 개발자가 코드를 이해하기 쉽게 만든다.
  • 자동 문서 생성: 별도의 도구를 사용해 문서를 자동화할 수 있다.
  • 유형 및 설명 제공: IDE에서 코드 힌트와 자동 완성을 지원한다.

2. JSDoc의 설치 및 설정 🛠️

JSDoc 설치하기

JSDoc을 프로젝트에 설치하려면 다음 명령어를 사용한다:


npm install -g jsdoc

문서 생성

jsdoc 명령어로 JavaScript 파일에서 자동으로 문서를 생성할 수 있다.


jsdoc 파일명.js -d docs
  • 파일명.js: 문서화할 JavaScript 파일
  • d docs: 문서를 저장할 디렉토리

3. JSDoc 기본 사용법 📝

JSDoc은 /** ... */ 형태의 주석 블록으로 작성한다.

함수 문서화 예제


/**
 * 두 숫자의 합을 계산하는 함수
 * @param {number} a - 첫 번째 숫자
 * @param {number} b - 두 번째 숫자
 * @returns {number} - 두 숫자의 합
 */
function add(a, b) {
    return a + b;
}

클래스 문서화 예제


/**
 * 사람 클래스
 * @class
 */
class Person {
    /**
     * @param {string} name - 사람의 이름
     * @param {number} age - 사람의 나이
     */
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 사람의 정보를 출력하는 메서드
     * @returns {string}
     */
    getInfo() {
        return `${this.name}은(는) ${this.age}살입니다.`;
    }
}

4. JSDoc 주요 태그 정리와 예제 🏷️✨

Block Tags 🔖

모든 태그는 아래와 같은 형식으로 사용된다.


/**
 * 설명 내용
 * @태그명 내용
 */
태그 설명 예제
@abstract 구현해야 할 추상 메서드임을 나타냄 js /** @abstract */ class AbstractClass { method() {} }
@access 접근 수준을 명시 (public, private 등) js /** @access private */
@alias 다른 이름으로 멤버를 문서화 js /** @alias OtherName */
@async 함수가 비동기임을 나타냄 js /** @async */ async function fetchData() {}
@augments 부모 클래스의 확장을 나타냄 js /** @augments ParentClass */ class Child extends ParentClass {}
@author 작성자를 명시 js /** @author Austin */
@class 클래스를 문서화 js /** @class Person */ class Person {}
@constant 상수를 문서화 js /** @constant {number} PI - 원주율 */ const PI = 3.14;
@deprecated 더 이상 사용되지 않음을 나타냄 js /** @deprecated */ function oldFunction() {}
@description 설명 추가 js /** @description 함수에 대한 설명 */
@enum 열거형을 문서화 js /** @enum {string} Colors */ const Colors = { RED: "red", BLUE: "blue" };
@example 사용 예제 제공 js /** @example console.log(add(2, 3)); */
@exports 모듈에서 내보내는 항목을 문서화 js /** @exports add */
@file 파일에 대한 설명 제공 js /** @file File 설명 */
@function 함수 문서화 js /** @function add */
@module JavaScript 모듈 문서화 js /** @module MathUtils */
@param 함수 파라미터를 문서화 js /** @param {string} name */ function greet(name) {}
@returns 함수의 반환 값을 명시 js /** @returns {number} */ function add(a, b) { return a + b; }
@throws 예외를 설명 js /** @throws {Error} Invalid input */
@typedef 사용자 정의 타입 정의 js /** @typedef {{name: string, age: number}} Person */

5. JSDoc과 TypeScript 비교 ⚖️

타입스크립트와 JSDoc의 차이점

비교 항목 JSDoc TypeScript
기본 목적 주석을 기반으로 타입 정보와 문서화 제공 정적 타입 검사와 문법 확장
도입 비용 낮음: 기존 JS 코드에 주석만 추가하면 됨 높음: 전체 프로젝트를 TypeScript로 변환 필요
유지보수 가벼움, 유연함 엄격한 타입 시스템으로 코드의 안전성 향상
호환성 기존 JavaScript와 100% 호환 JavaScript와 호환되나 컴파일이 필요

6. JSDoc을 사용하는 이유 🚀

  • 기존 JavaScript 코드에 쉽게 도입할 수 있다.
  • 비개발자나 팀원이 코드 문서를 쉽게 이해할 수 있다.
  • 유연한 타입 명시로 IDE의 자동완성과 힌트 기능을 지원한다.

7. 결론 🏁

JSDoc은 JavaScript 문서화를 위한 강력한 도구이다. 간단한 주석을 통해 코드의 설명과 타입 정보를 추가하고, 자동으로 문서를 생성할 수 있어 팀 협업과 코드 유지보수에 큰 도움이 된다.


참고https://jsdoc.app/

댓글