我有一个接受一个字符串参数的函数。此参数只能具有几个定义的可能值之一。记录相同内容的最佳方法是什么?应该将shapeType定义为enum还是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;
};

问题的第二部分是在将shapeType定义为您建议的文件中,shapeType的可能值未知。有几个开发人员提供的多个文件可能会增加shapeType的可能值。

PS:我正在使用jsdoc3

最佳答案

如何声明一个虚拟枚举:

/**
 * 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)

但是,您至少需要为此向JSDOC声明枚举。但是代码很干净,您可以在WebStorm中自动完成。

多文件问题虽然不能用这种方法解决。

07-24 18:28