如何告诉 JSDoc 一个方法 returns 一个包含 class 类型的对象?

How to tell JSDoc that a method returns an object containing a class type?

我有一个 Node.js 函数来创建一个 Express 服务器。

我已将 //@ts-check 添加到文件中,以便 VSCode 对所有内容进行 lints 和类型检查。

记录此 createServer 函数的正确方法是什么?

我想证明它 returns 一个 Promise,它解析一个包含 Express 实例 (app) 和 Number (port)

的对象

如果这是一个反模式,那也很高兴知道。

//@ts-check
const express = require('express');

/**
 * @param {Number} port
 * @returns {Promise}
 */
function createServer(port) {
    return new Promise((resolve, reject) => {
        const app = express();
        server = app.listen(port, () => {
            resolve({app, port});
        });
    });
}

这为我编译:

//@ts-check
const express = require('express');

/**
 * @param {Number} port
 * @returns {Promise<{app: import("express").Express, port: number}>}
 */
function createServer(port) {
    return new Promise((resolve, reject) => {
        const app = express();
        const server = app.listen(port, () => {
            resolve({app, port});
        });
    });
}

有关详细信息,请参阅 the documentation page