javascript - 如何为类型化对象函数参数的字段做 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>}
*/
解决方案
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.a
orABC.b
的描述,您可以完全跳过该 JSDoc。Typescript 和您的 Typescript IDE 已经知道这a
是一个字符串,并且b
是接口定义中的一个数字。即使您提出的 JSDoc 是正确的(它不是),它也将是多余的。
问题中的签名x
会产生错误,所以我不得不猜测你的意图。请参阅我在问题下的评论。
推荐阅读
- sas - SAS Studio:使用“我的文件夹”中的数据
- javascript - 使用 WebForm_DoPostBackOptions 和 WebForm_DoPostBackWithOptions 调用 Html 按钮
- git - 添加指向本地 git 存储库的远程似乎失败
- amazon-web-services - Terraform 将 AMI 权限设置为公共
- javascript - 角路由器。如何导航到当前 URL 但使用不同的参数?
- sql - 使用 regexp_replace 从数字中删除字母
- servlets - 请求后 Tomcat 停止
- php - 如果用户离开/关闭 php 脚本,它会自动结束会话吗?
- ios - 为什么包装 os_log() 会导致无法正确记录双打?
- c# - 如何在 Dictionary 中的日期时间上使用 IF 语句
> 在 C# 中