如何对“mixed”类型进行JsDoc注释?

42

简单的问题,如何记录“混合类型”?我知道我可以列出所有可能的类型,例如{null|undefined|String|Number|Object},但最终可能会错过一些类型并变得过于复杂。我尝试使用Mixed关键字,但它在许多IDE(如WebStorm)中弹出错误信息。

3个回答

78

我找到了解决方法:

/**
 * @param {*} foo
 */
function bar(foo) {}

2
你在哪里找到的?我的搜索结果只能证实这适用于Closure编译器。这是“官方”的JSDoc语法吗? - Robin van Baalen
@RobinvanBaalen 请看一下 The ALL type,几乎是最后一个:https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=de#types - yckart
4
就像我之前说过的一样;JSDocClosure compiler - Robin van Baalen
但是gc是主要的jsdoc定义者之一 ;) 这里有一个关于jsdoc及其背景的好资源:http://wiki.servoy.com/display/public/DOCS/Annotating+JavaScript+using+JSDoc;jsessionid=5DD1388ED3DA0D59FC43114AC9492E0A#AnnotatingJavaScriptusingJSDoc-TypeExpressions - yckart
2
我在 JSDoc 3 的问题跟踪器中创建了一个“添加此类型”的问题。链接为 https://github.com/jsdoc3/jsdoc/issues/468。 - Sebastian Zartner
6
现在这个是在 JSDoc 文档中: http://usejsdoc.org/tags-param.html#multiple-types-and-repeatable-parameters - sorohan

3

使用 {}

以下是来自http://usejsdoc.org/tags-type.html的示例:

An object called 'myObj' with properties 'a' (a number), 'b' (a string) and 'c' (any type).

{{a: number, b: string, c}} myObj
// or:
{Object} myObj
{number} myObj.a
{string} myObj.b
{} myObj.c

3
在JSDoc中,您可以以不同的方式描述值。例如,使用以下标记:@type@param@return。您可以使用“?”指定可选值。以下是一个示例。
    /**
     * Returns string or null
     *
     * @param {?string} nullableStringArgument
     *
     * @return {?string}
     */
    function returnNullableString (nullableStringArgument = null) {
        /** @type {?string} */
        const nullableString = [null, 'string'][Math.floor(Math.random() * 2)];

        return nullableString;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接