美文网首页让前端飞
TypeScript——JavaScript文件类型检查(三)

TypeScript——JavaScript文件类型检查(三)

作者: 2o壹9 | 来源:发表于2019-12-29 21:28 被阅读0次

    支持的JSDoc

    下面的列表列出了当前所支持的JSDoc注解,你可以用它们在JavaScript文件里添加类型信息。

    注意,没有在下面列出的标记(例如@async)都是还不支持的。

    @type

    @param (or @arg or @argument)

    @returns (or @return)

    @typedef

    @callback

    @template

    @class (or @constructor)

    @this

    @extends (or @augments)

    @enum

    它们代表的意义与usejsdoc.org上面给出的通常是一致的或者是它的超集。 下面的代码描述了它们的区别并给出了一些示例。

    @type

    可以使用@type标记并引用一个类型名称(原始类型,TypeScript里声明的类型,或在JSDoc里@typedef标记指定的) 可以使用任何TypeScript类型和大多数JSDoc类型。

    /**

    * @type {string}

    */

    var s;

    /** @type {Window} */

    var win;

    /** @type {PromiseLike<string>} */

    var promisedString;

    // You can specify an HTML Element with DOM properties

    /** @type {HTMLElement} */

    var myElement = document.querySelector(selector);

    element.dataset.myData = '';

    @type可以指定联合类型—例如,string和boolean类型的联合。

    /**

    * @type {(string | boolean)}

    */

    var sb;

    注意,括号是可选的。

    /**

    * @type {string | boolean}

    */

    var sb;

    有多种方式来指定数组类型:

    /** @type {number[]} */

    var ns;

    /** @type {Array.<number>} */

    var nds;

    /** @type {Array<number>} */

    var nas;

    还可以指定对象字面量类型。 例如,一个带有a(字符串)和b(数字)属性的对象,使用下面的语法:

    /** @type {{ a: string, b: number }} */

    var var9;

    可以使用字符串和数字索引签名来指定map-like和array-like的对象,使用标准的JSDoc语法或者TypeScript语法。

    /**

    * A map-like object that maps arbitrary `string` properties to `number`s.

    *

    * @type {Object.<string, number>}

    */

    var stringToNumber;

    /** @type {Object.<number, object>} */

    var arrayLike;

    这两个类型与TypeScript里的{ [x: string]: number }和{ [x: number]: any }是等同的。编译器能识别出这两种语法。

    可以使用TypeScript或Closure语法指定函数类型。

    /** @type {function(string, boolean): number} Closure syntax */

    var sbn;

    /** @type {(s: string, b: boolean) => number} Typescript syntax */

    var sbn2;

    或者直接使用未指定的Function类型:

    /** @type {Function} */

    var fn7;

    /** @type {function} */

    var fn6;

    Closure的其它类型也可以使用:

    /**

    * @type {*} - can be 'any' type

    */

    var star;

    /**

    * @type {?} - unknown type (same as 'any')

    */

    var question;

    转换

    TypeScript借鉴了Closure里的转换语法。 在括号表达式前面使用@type标记,可以将一种类型转换成另一种类型

    /**

    * @type {number | string}

    */

    var numberOrString = Math.random() < 0.5 ? "hello" : 100;

    var typeAssertedNumber = /** @type {number} */ (numberOrString)

    相关文章

      网友评论

        本文标题:TypeScript——JavaScript文件类型检查(三)

        本文链接:https://www.haomeiwen.com/subject/zteuoctx.html