129

1 つの文字列パラメーターを受け入れる関数があります。このパラメーターは、いくつかの定義された可能な値のうちの 1 つだけを持つことができます。同じことを文書化する最良の方法は何ですか? shapeType は、列挙型または TypeDef などとして定義する必要がありますか?

Shape.prototype.create = function (shapeType) {
    // shapeType can be "rect", "circle" or "ellipse"...
    this.type = shapeType;
};

Shape.prototype.getType = function (shapeType) {
    // shapeType can be "rect", "circle" or "ellipse"...
    return this.type;
};

問題の 2 番目の部分は、提案されたものとして定義されているファイルで、 の可能な値shapeTypeが不明であることです。shapeTypeの可能な値に追加する可能性のある複数の開発者によって提供された複数のファイルがありますshapeType

PS:使用していますjsdoc3

4

5 に答える 5

32

ダミーの列挙型を宣言するのはどうですか:

/**
 * Enum string values.
 * @enum {string}
 */
Enumeration = {
    ONE: "The number one",
    TWO: "A second number"
};

/**
 * Sample.
 * @param {Enumeration} a one of the enumeration values.
 */
Bar.prototype.sample = function(a) {};


b = new Bar();

bar.sample(Enumeration.ONE)

ただし、このためには、少なくとも enum を JSDOC に宣言する必要があります。しかし、コードはクリーンで、WebStorm でオートコンプリートを取得できます。

ただし、複数ファイルの問題はこの方法では解決できません。

于 2013-10-11T16:09:51.187 に答える
11

JSDocに許可された値を記述する正式な方法はないと思います。

@param {String('up'|'down'|'left'|'right')}ユーザーb12toasterが言及したようなものを確かに書くことができます。

ここに画像の説明を入力

しかし、APIDocjsから参照することで、制約付きの値 ( allowedValuesとも呼ばれます) を記述するために使用するものを次に示します。

/**
 * Set the arrow position of the tooltip
 * @param {String='up','down','left','right'} position pointer position
 */
setPosition(position='left'){
  // YOUR OWN CODE
}

そうそう、私はES6を使用しています。

于 2016-08-31T21:19:47.437 に答える