【发布时间】:2013-10-06 07:11:16
【问题描述】:
我有一个接受一个字符串参数的函数。此参数只能具有几个已定义的可能值之一。记录相同内容的最佳方法是什么? 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的定义和函数参数的联合:ShapeType|string。但是枚举不支持在 Closure-compiler 中声明后添加子类型。 -
@ChadKillingsworth 我明白你的意思。我被困在我想定义一组属性的地方(比如说一个作为类的构造参数的对象)。如果建筑的所有属性都在一个位置定义,那就太好了。不幸的是,我的代码有许多模块有助于构建属性。做一些像 mixin 或子类化属性的事情会过火!因此,如果我可以简单地注入到属性列表定义中,那就太好了。
-
我面临的另一个类似问题,但分布式属性列表是stackoverflow.com/questions/19113571/…
-
以下所有解决方案都强制我们创建一个枚举。 GitHub 上有一个活跃的功能请求,可以让这个过程变得更容易:github.com/jsdoc3/jsdoc/issues/629。所以任何喜欢它的人都应该碰它。
标签: google-closure-compiler google-closure jsdoc code-documentation