我在
mjs
中使用 JSDoc 来模仿我拥有的 ts
功能。 mjs
使用 TypeScript 编译器进行检查。来自 ts
文件的原始函数(重载)是这样的:
export function inline<TypeS extends boolean, TypeT = unknown, TypeF = undefined>(S?: TypeS, T?: TypeT, F?: TypeF): TypeS extends true ? TypeT : TypeF {}
export function inline<TypeS extends boolean, TypeT = unknown, TypeF = undefined>(
S?: TypeS,
T?: TypeT,
F?: TypeF,
): unknown {}
我正在尝试类似的东西:
/**
* @callback Inline
* @param {TypeS} S
* @param {TypeT} T
* @param {TypeF} F
* @return {TypeS extends true ? TypeT : TypeF}
* @type {Inline}
*/
export function inline(
S,
T,
F,
) {}
这几乎是我所期望的,但是,我没有泛型类型和泛型的默认值。有没有办法用 JSDoc 正确地做到这一点?
我用来尝试解决的内容是:
但是逐个尝试,先不要过载,然后,如果可能的话,可能会过载(我真的不太了解这个东西,这对我来说很棘手)
你忘了定义模板
/**
* @template {boolean} TypeS
* @template {unknown} TypeT
* @template {undefined} TypeF
* @param {TypeS} [S]
* @param {TypeT} [T]
* @param {TypeF} [F]
* @return {TypeS extends true ? TypeT : TypeF | unknown}
*/
export function inline(
S,
T,
F,
) { }