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

将TypeScript类型定义导入JSDoc时遭遇“Type 'XOR' is not generic.ts(2315)”错误的技术咨询

解决JSDoc中使用ts-xor的XOR泛型时的"Type 'XOR' is not generic"错误

这个问题的核心是你在JSDoc里导入类型的方式不正确——你当前的写法把整个ts-xor模块赋值给了XOR别名,而不是模块里导出的XOR泛型类型本身。TypeScript自然会认为XOR不是泛型,从而抛出错误。

修正步骤

只需要调整@typedef的导入语法,明确指定要导入模块中的XOR类型:

/**
 * @typedef {import('ts-xor').XOR} XOR
 * @typedef {XOR<{
 *   small: true
 * }, {
 *   verySmall: true,
 * }>} ButtonProps
 * @typedef {React.FunctionComponent<ButtonProps>} ButtonComponent
 */

原理说明

  • import('ts-xor')返回的是整个模块的类型,包含该模块导出的所有内容;
  • 通过.XOR后缀,我们精准获取到了模块里导出的那个泛型类型别名,这样后续使用XOR<...>时,TypeScript就能识别它是一个泛型类型了。

如果你的项目是纯TypeScript文件(不是用JSDoc的JS文件),其实可以直接用ES模块导入:

import type { XOR } from 'ts-xor';

type ButtonProps = XOR<{ small: true }, { verySmall: true }>;
type ButtonComponent = React.FunctionComponent<ButtonProps>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:22:27