首页 > 解决方案 > 如何为类型化对象函数参数的字段做 Typescript JSDoc?

问题描述

下面是一个 Typescript 函数签名 x,它接受 ABC 作为可选参数。如果传入 ABC,则 a 和 b 是必填字段。

async x (options: ABC = {}): Promise<string> 

interface ABC {
  a: string
  b: number
}

JSDOC 应该是这样的吗

 /** 
   * @param {ABC} [options]
   * @param {string} options.a
   * @param {number} options.b
   * @return {Promise<string>} 
   */

或这个

 /** 
   * @param {ABC} [options]
   * @param {string} [options.a]
   * @param {number} [options.b]
   * @return {Promise<string>} 
   */

标签: javascripttypescriptjsdoc

解决方案


ABC在 JSDoc 中记录结构,ABC而不在 JSDoc 中x

interface ABC {
    /**
     * describe `a` here
     */
    a: string

    /**
     * describe `b` here
     */
    b: number
}

/**
 * @param {ABC} options
 * @return {Promise<string>}
 */
async function x (options: ABC): Promise<string> {
    // IOU a promise
}

如果没有关于ABC.aorABC.b的描述,您可以完全跳过该 JSDoc。Typescript 和您的 Typescript IDE 已经知道这a是一个字符串,并且b是接口定义中的一个数字。即使您提出的 JSDoc 是正确的(它不是),它也将是多余的。

问题中的签名x会产生错误,所以我不得不猜测你的意图。请参阅我在问题下的评论。


推荐阅读