显式设置函数的返回类型

Explicitly set the return type of functions

本文关键字:返回类型 函数 设置      更新时间:2023-09-26

我最近在查看JS代码时发现了以下注释:

/**
* Explicitly set the return type here to prevent the primitive being lost when using new
* @return {boolean}
*/
function giveMeABoolean(please) {
    ...
}

给了什么?JS中的返回类型?我在网上查了一下,找不到任何关于这个的信息。经过一些测试后,当使用new而不使用注释时,原语确实丢失了。有人能解释一下这个注释是如何工作的吗?

这些注释是JSDoc,它只是一种记录代码的方式。当您试图理解某个方法的API时,ide之类的工具可以拾取这些文档,并以良好的格式向您展示。

一些工具在进行静态分析时也可能包含此信息,以帮助您为智能感知等事情提供提示。这将给开发人员留下这样的印象:当他们处理代码时,返回值的"类型"是保留/已知的。但是,这些注释在运行时不会产生影响。

下面是@return注释的文档。这里有一个相关的例子:

/**
 * Returns the sum of a and b
 * @param {Number} a
 * @param {Number} b
 * @param {Boolean} retArr If set to true, the function will return an array
 * @returns {Number|Array} Sum of a and b or an array that contains a, b and the sum of a and b.
 */
function sum(a, b, retArr) {
    if (retArr) {
        return [a, b, a + b];
    }
    return a + b;
}

我认为该代码的作者是出于文档目的而提供该信息的。如果你真的想提供类型信息,你可以考虑typescript或flow