购物车
登陆 / 注册
微信扫码登陆

@type

@type
@type标签允许你提供一个表达式,用于标识一个标识符可能包含的值的类型,或由函数返回值的类型。您还可以将其包含与其他JSDoc标签类型的表达式结合使用,如@param 标签。
编辑:青灯夜游 青灯夜游 更新时间:2019-01-07 14:36:13

@type

描述: 记录一个对象的类型。

语法

@type {typeName}

概述

@type标签允许你提供一个表达式,用于标识一个标识符可能包含的值的类型,或由函数返回值的类型。您还可以将其包含与其他JSDoc标签类型的表达式结合使用,如@param 标签。

类型表达式可以包括标识符的namepath(例如,myNamespace.MyClass);一个内置的JavaScript类型(例如,string);或这些的组合。你可以使用任何Google Closure Compiler 的类型表达式,还有其他几种JSDoc所特有的格式。

如果JSDoc确定一个类型表达式是无效的,它会显示一个错误并停止运行。您可以通过与--lenient选项运行JSDoc把这个错误变成警告。

注意:在JSDoc3.2及更高版本完全支持Google Closure Compiler风格的类型表达式。早期版本的JSDoc支持部分的Google Closure Compiler类型表达式。

每种类型是通过使用下面描述的格式之一,提供一个类型表达式指定的。 在适当情况下,JSDoc将自动创建链接到其他标识符的文档。例如,@type {MyClass}将链接到MyClass的文档,如果该标识符已经被文档化。

类型名语法示例描述
Symbol name (name expression){boolean}
{myNamespace.MyClass}
指定符号的名称。 如果标识符已经被文档化,JSDoc将创建一个链接到该标识符的文档。
Multiple types (type union){(number|boolean)}
表示数字或布尔
这意味着值可能是几种类型中的一种,用括号括起来,并用"|"分隔类型的完整列表。
Arrays and objects (type applications and record types)MyClass的实例的数组
{Array.}
// or:
{MyClass[]}
具有字符串键和数字值的对象:
{Object.}
对象“MyObj”中具有属性 'a' (一个数字), 'b' (一个字符串) 和 'c' (任何类型)
{a: number, b: string, c} myObj
// or:
{Object} myObj
{number} myObj.a
{string} myObj.b
{} myObj.c

JSDoc支持 Closure Compiler 语法定义的数组和对象类型。

还可以通过array后面附加`[]`指示包含在数组中的类型。例如,表达式`string[]`表示字符串数组。

对于具有一组已知的属性的对象,你可以使用 Closure Compiler 语法文档化标注的类型。您可以分别描述每个属性,这使您能够提供有关每个属性的更多详细信息。

Nullable type一个数字或null
{?number}
指明类型为指定的类型,或者为null。
Non-nullable type一个数字,但是绝对不会是null
{!number}
指明类型为指定的类型,但是绝对不会是null。
Variable number of that type此函数接受可变数量的数值参数。<br>@param {...number} num表示该函数接受可变数量的参数,并指定一个类型的参数。 例如:
/**
*  Returns the sum of all numbers passed to the function.
*  @param {...number} num A positive or negative number
*/
function sum(num) {
   var i=0, n=arguments.length, t=0;
   for (; i<n; i++)="" {t += arguments[i];
   }
   return t;
}
Optional parameter一个可选参数“foo”<br>@param {number} [foo]
// or:<br>@param {number=} foo
一个可选参数“foo”,默认值为1。<br>@param {number} [foo=1]
指示参数是可选的。当使用JSDoc的语法表示可选参数时,你还可以指明参数的默认值。
Callbacks/**
* @callback myCallback
* @param {number} x - ...
*/
/** @type {myCallback} */
var cb;

使用@callback标签指明一个回调。和@typedef标签是相同的,不同之处在于回调的类型始终是"function"。

Type definitions记录'id', 'name', 'age'属性的类型/**
*  @typedef PropertiesHash
*  @type {object}
*  @property {string} id - an ID.
*  @property {string} name - your name.
*  @property {number} age - your age.
* /

/** @type {PropertiesHash}
*/
var props;
您可以使用@typedef标签记录复杂类型,然后参考类型定义在你文档的其他地方。

例子

例如:

/** @type {(string|Array.<string>)} */
var foo;
/** @type {number} */
var bar = 1;

在许多情况下,您可以包含一个类型表达式作为另一个标签的一部分,而不是在你的JSDoc注释块中包含独立@type标签。

例如,类型表达式可以有多个标签:

/**
 * @type {number}
 * @const
 */
 var FOO = 1;
 // same as:
 /** @const {number} */
 var FOO = 1;
网站导航
网站首页
学习路径
视频教程
开发软件
旗下子站
php中文网
phpstudy
文章列表
教程文档
关于我们
企业合作
人才招聘
联系我们
讲师招募
QQ交流群
QQ交流群
微信公众号
微信公众号