You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSDoc为带可选属性参数的函数指定TypeScript类型?

问题:通过JSDoc为K6函数指定正确TypeScript类型

当编写如下简单函数时,IDE能正确识别JSDoc指定的TypeScript类型:

/** @type {(envVar: string) => boolean} */
const envToBoolean = (envVar) => !!process.env[envVar];

但在更复杂的场景中,编写如下函数时,IDE显示的类型不符合预期:

/** @type {(env?: { isBrowser?: boolean, isDebug?: boolean }) => import('k6/options').Options} */
export const defaultOptions = ({ isBrowser = false, isDebug = envToBoolean('DEBUG_K6') } = {}) => ...

实际IDE显示的类型为:

function defaultOptions({isBrowser = false, isDebug}?): Options

如果在纯TypeScript文件中编写逻辑相同的函数:

export const defaultOptions = ({ isBrowser = false, isDebug = false }: { isBrowser?: boolean, isDebug?: boolean } = {}): Options => { ... };

type x = typeof defaultOptions;

得到的类型是符合预期的:

function defaultOptions({isBrowser = false, isDebug = false}?: {isBrowser?: boolean, isDebug?: boolean}): Options

// 鼠标悬停x时显示
({isBrowser, isDebug}?: {isBrowser?: boolean, isDebug?: boolean}) => Options

目前无法在K6脚本中直接使用上述TypeScript写法——尽管官方声称支持,但导入其他模块的函数时会报错。因此想确认:是否仅通过JSDoc就能为该函数指定上述符合预期的正确类型?

我已经参考TypeScript官方文档尝试了多种JSDoc写法,但都无法修正参数类型的显示,只有部分写法能展开k6.Options的定义。

内容的提问来源于stack exchange,提问作者Alexey Romanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:04:51