본문으로 건너뛰기

@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 클래스는 Flyable 및 Bird 두 클래스 모두로부터 상속받으며, 두 클래스 모두 takeOff 메서드를 정의합니다. Duck에 대한 문서가 @augments Bird를 마지막으로 나열하므로, JSDoc은 자동으로 Duck#takeOff를 Bird#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 () {
// ...
}

관련 링크​