본문으로 건너뛰기

@augments

동의어

@extends

구문

@augments <namepath>

개요

@augments 또는 @extends 태그는 기호가 부모 기호로부터 상속받고, 잠재적으로 추가된다는 것을 나타냅니다. 이 태그는 클래스 기반 및 프로토타입 기반 상속 모두를 문서화하는 데 사용할 수 있습니다.

JSDoc 3.3.0 이상에서는 기호가 여러 부모로부터 상속받고, 두 부모 모두 동일한 이름의 멤버를 가진 경우, JSDoc은 JSDoc 주석에서 나열된 마지막 부모의 문서를 사용합니다.

예제

다음 예제에서는 Duck 클래스가 Animal의 서브클래스로 정의됩니다. Duck 인스턴스는 Animal 인스턴스와 동일한 속성을 가지며, Duck 인스턴스에만 고유한 speak 메서드도 갖습니다.

클래스/서브클래스 관계 문서화

/**
* @constructor
*/
function Animal() {
/** 이 동물이 살아 있나요? */
this.alive = true
}

/**
* @constructor
* @augments Animal
*/
function Duck() {}
Duck.prototype = new Animal()

/** 오리는 뭐라고 말할까요? */
Duck.prototype.speak = function () {
if (this.alive) {
alert('Quack!')
}
}

var d = new Duck()
d.speak() // Quack!
d.alive = false
d.speak() // (아무것도 아님)

다음 예제에서 Duck 클래스는 FlyableBird 두 클래스 모두로부터 상속받으며, 두 클래스 모두 takeOff 메서드를 정의합니다. Duck에 대한 문서가 @augments Bird를 마지막으로 나열하므로, JSDoc은 자동으로 Duck#takeOffBird#takeOff의 주석을 사용하여 문서화합니다.

중복된 메서드 이름으로 인한 다중 상속

/**
* 날 수 있는 것들을 위한 추상 클래스입니다.
* @class
*/
function Flyable() {
this.canFly = true
}

/** 이륙합니다. */
Flyable.prototype.takeOff = function () {
// ...
}

/**
* 새를 나타내는 추상 클래스입니다.
* @class
*/
function Bird(canFly) {
this.canFly = canFly
}

/** 가능하다면 날개를 펴고 날아보세요. */
Bird.prototype.takeOff = function () {
if (this.canFly) {
this._spreadWings()._run()._flapWings()
}
}

/**
* 오리를 나타내는 클래스입니다.
* @class
* @augments Flyable
* @augments Bird
*/
function Duck() {}

// 문서에서는 "가능하다면 날개를 펴고 날아보세요."라고 설명됩니다.
Duck.prototype.takeOff = function () {
// ...
}

관련 링크