Javascript 泛型闭包类型的强制规范

Javascript 泛型闭包类型的强制规范,javascript,google-closure-compiler,Javascript,Google Closure Compiler,通常,如果未能在闭包中指定泛型类型参数,则不会引发错误。这与许多其他语言不同,包括TypeScript。闭包将该类型视为未知类型,通常会被忽略。可以设置编译器标志,使其抱怨未知类型,但这些标志只能全局设置,而且通常过于嘈杂,无法真正使用 我有一个结束类,回应。我希望所有响应实例都为指定一个类型,而不是简单地将其取消类型化。要做到这一点,每当您尝试实例化一个泛型实例时,我想强制执行编译时错误,这样我就可以找到并修复所有这样的实例 我一直在试图强迫这种行为,但我所做的任何尝试都不会产生错误。这是我的

通常,如果未能在闭包中指定泛型类型参数,则不会引发错误。这与许多其他语言不同,包括TypeScript。闭包将该类型视为未知类型,通常会被忽略。可以设置编译器标志,使其抱怨未知类型,但这些标志只能全局设置,而且通常过于嘈杂,无法真正使用

我有一个结束类,回应。我希望所有响应实例都为指定一个类型,而不是简单地将其取消类型化。要做到这一点,每当您尝试实例化一个泛型实例时,我想强制执行编译时错误,这样我就可以找到并修复所有这样的实例

我一直在试图强迫这种行为,但我所做的任何尝试都不会产生错误。这是我的最新尝试,但似乎被忽略了:

/**
 * @template OPT_RESPONSE_TYPE
 * @template RESPONSE_TYPE := cond(
 *     !isUnknown(OPT_RESPONSE_TYPE),
 *     OPT_RESPONSE_TYPE,
 *     printType(
 *         'ERROR: Please specify a non-generic type for Response',
 *         typeExpr('ERROR')
 *     )
 * ) =:
 *
 * @param {RESPONSE_TYPE=} value
 */
const Response = class {
  constructor(value = undefined) {
    /** @const */
    this.value = value;
  }
}
作为衡量标准,我一直在将任何未知/未指定的泛型类型转换为未定义的类型,因为这将鼓励编译器为潜在的不安全使用引发更多错误:

 * @template OPT_RESPONSE_TYPE
 * @template RESPONSE_TYPE := cond(isUnknown(OPT_RESPONSE_TYPE), 'undefined', OPT_RESPONSE_TYPE) =:

是否有更直接的方法要求在闭包中指定泛型类型参数?

这可能是您可以使用一个。如果您有足够的勇气深入研究未记录的类型转换语言,那么这也不应该是一个问题