ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSDoc
    πŸ’»κ°œλ°œ/Javascript 2024. 9. 27. 17:18
    728x90

    JSDoc?

    • JSDoc은 JavaScript μ½”λ“œμ— 주석을 μΆ”κ°€ν•˜μ—¬ μ½”λ“œμ˜ ꡬ쑰와 κΈ°λŠ₯을 λ¬Έμ„œν™”ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€.
    • JSDoc 주석은 μ½”λ“œμ˜ 가독성을 높이고, μžλ™μœΌλ‘œ API λ¬Έμ„œλ₯Ό μƒμ„±ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.
    • JSDoc 주석은 일반적으둜 /** ... */ ν˜•μ‹μœΌλ‘œ μž‘μ„±λ©λ‹ˆλ‹€.

     

    JSDoc νƒœκ·Έ

    • @param: ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.
    • @returns: ν•¨μˆ˜μ˜ λ°˜ν™˜ 값을 μ„€λͺ…ν•©λ‹ˆλ‹€.
    • @typedef: μ‚¬μš©μž μ •μ˜ νƒ€μž…μ„ μ •μ˜ν•©λ‹ˆλ‹€.
    • @property: 객체의 속성을 μ„€λͺ…ν•©λ‹ˆλ‹€.
    • @class: 클래슀λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.
    • @method: 클래슀의 λ©”μ„œλ“œλ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.

     

    μ‚¬μš© μ˜ˆμ‹œ

    1. ν•¨μˆ˜ 주석:
    /**
     * 두 수λ₯Ό λ”ν•©λ‹ˆλ‹€.
     * @param {number} a - 첫 번째 숫자.
     * @param {number} b - 두 번째 숫자.
     * @returns {number} 두 수의 ν•©.
     */
    function add(a, b) {
        return a + b;
    }
    1. 객체 주석:
    /**
     * μ‚¬μš©μž 객체.
     * @typedef {Object} User
     * @property {string} name - μ‚¬μš©μž 이름.
     * @property {number} age - μ‚¬μš©μž λ‚˜μ΄.
     */
    
    /**
     * μ‚¬μš©μž 정보λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.
     * @param {User} user - μ‚¬μš©μž 객체.
     */
    function printUser(user) {
        console.log(`Name: ${user.name}, Age: ${user.age}`);
    }
    1. 클래슀 주석:
    /**
     * μžλ™μ°¨ 클래슀.
     */
    class Car {
        /**
         * μžλ™μ°¨ μƒμ„±μž.
         * @param {string} make - μ œμ‘°μ‚¬.
         * @param {string} model - λͺ¨λΈ.
         */
        constructor(make, model) {
            this.make = make;
            this.model = model;
        }
    
        /**
         * μžλ™μ°¨ 정보λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
         * @returns {string} μžλ™μ°¨ 정보.
         */
        getInfo() {
            return `${this.make} ${this.model}`;
        }
    }

    JSDoc을 μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 이해도λ₯Ό 높이고, νŒ€μ› κ°„μ˜ ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    JSDoc을 톡해 μƒμ„±λœ λ¬Έμ„œλŠ” API λ¬Έμ„œν™” 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ HTML ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


    TypeScriptμ—μ„œ JSDoc μ‚¬μš©

    • JSDoc은 TypeScript(TS)μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, TypeScript μžμ²΄κ°€ κ°•λ ₯ν•œ νƒ€μž… μ‹œμŠ€ν…œμ„ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— JSDoc의 ν•„μš”μ„±μ΄ 쀄어듀 수 μžˆμŠ΅λ‹ˆλ‹€.
    • TypeScriptλŠ” νƒ€μž…μ„ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜λ―€λ‘œ, JSDoc 주석 없이도 μ½”λ“œμ˜ νƒ€μž…μ„ λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • κ·ΈλŸ¬λ‚˜ TypeScript μ½”λ“œμ— JSDoc을 μ‚¬μš©ν•˜λŠ” 것은 μ—¬μ „νžˆ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히 λ‹€μŒκ³Ό 같은 κ²½μš°μ— 도움이 λ©λ‹ˆλ‹€:
    1. λ¬Έμ„œν™”: JSDoc을 μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜, 클래슀, μΈν„°νŽ˜μ΄μŠ€ λ“±μ˜ μ„€λͺ…을 μΆ”κ°€ν•˜λ©΄ μ½”λ“œμ˜ 가독성을 높이고, λ‹€λ₯Έ κ°œλ°œμžλ“€μ΄ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
    2. νƒ€μž… 정보 보강: TypeScript의 νƒ€μž… μ‹œμŠ€ν…œμ„ λ³΄μ™„ν•˜κΈ° μœ„ν•΄ JSDoc을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ³΅μž‘ν•œ νƒ€μž…μ΄λ‚˜ μ œλ„€λ¦­ νƒ€μž…μ„ μ„€λͺ…ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.
    3. IDE 지원: λ§Žμ€ IDE(예: Visual Studio Code)λŠ” JSDoc 주석을 μΈμ‹ν•˜μ—¬ μ½”λ“œ μ™„μ„± 및 νƒ€μž… 정보λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ, JSDoc을 μ‚¬μš©ν•˜λ©΄ 개발 κ²½ν—˜μ΄ ν–₯상될 수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ‚¬μš© μ˜ˆμ‹œ

    /**
     * 두 수λ₯Ό λ”ν•©λ‹ˆλ‹€.
     * @param {number} a - 첫 번째 숫자.
     * @param {number} b - 두 번째 숫자.
     * @returns {number} 두 수의 ν•©.
     */
    function add(a: number, b: number): number {
        return a + b;
    }
    
    /**
     * μ‚¬μš©μž 객체.
     * @typedef {Object} User
     * @property {string} name - μ‚¬μš©μž 이름.
     * @property {number} age - μ‚¬μš©μž λ‚˜μ΄.
     */
    
    /**
     * μ‚¬μš©μž 정보λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.
     * @param {User} user - μ‚¬μš©μž 객체.
     */
    function printUser(user: { name: string; age: number }): void {
        console.log(`Name: ${user.name}, Age: ${user.age}`);
    }