[JS] JSDoc 가이드
![[JS] JSDoc 가이드](/content/images/size/w1920/2024/12/jsdoc.jpg)
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 문서화를 위한 강력한 도구이다. 간단한 주석을 통해 코드의 설명과 타입 정보를 추가하고, 자동으로 문서를 생성할 수 있어 팀 협업과 코드 유지보수에 큰 도움이 된다.
댓글