如何修复“表达式生成的联合类型过于复杂而无法表示。ts(2590)”?

Fre*_*888 103 typescript

我正在尝试使用@chakra-ui/reactnpm 库中的 Button,但 Button 元素会产生此错误:

TypeScript:表达式生成的联合类型过于复杂而无法表示。ts(2590) 示例:

import {Button} from "@chakra-ui/react"

function Page() {
  return <Button onClick={(event) => {}}>Text</Button>
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*888 296

VSCode Typescript 扩展

确保您使用正确的打字稿版本。Typescript 扩展可以使用自己的版本,而不是使用在 package.json 中设置的项目的 Typescript 版本

解决方案

图形化解决方案

  1. 在 VS Code 中打开 JavaScript 或 TypeScript 文件。
  2. 在 VS Code 命令面板(默认快捷键是 F1 或 Ctrl+P)中,运行 TypeScript: 选择 TypeScript 版本命令。
  3. 确保您已Use workspace version选择

如果没有Use workspace version选项请确保typescript您的依赖项中有package.json并且您已使用npm install或安装了依赖项npm clean-install
如果您仍然没有它 - 添加typescript.enablePromptUseWorkspaceTsdk: true.vscode/settings.json或查找设置Enable Prompt Use Workspace Tsdk并启用它

JSON解决方案

更新您的 vscode 配置./.vscode/settings.json(如果没有,请创建它)

{
  "typescript.enablePromptUseWorkspaceTsdk": true,
  "typescript.tsdk": "node_modules/typescript/lib"
}
Run Code Online (Sandbox Code Playgroud)

推荐

设置 typescript 扩展以提示您是否使用工作区版本
在 VsCode 设置中找到设置“Typescript: Enable Prompt Use Workspace Tsdk”并启用它 在此输入图像描述 下次您在 VsCode 中打开工作区时,您将看到此通知: 在此输入图像描述 您想单击“允许”:)

其他可能的解决方案

  1. 更新 npm 版本
    如果您使用 nvm -nvm install --latest-npm
  2. 更新nodejs版本
    如果您目前无法将nodejs更新到最新版本,您可以将其至少更新到最新的次要+路径版本(x.latest.latest)以免发生重大更改
  3. 删除node_modulesnpm install
  4. 如果您的项目由文件夹分隔并且位于其中,您将无法在 vscode 中选择 typescript 版本。在这种情况下,打开新的 vscode 并直接进入包含 package.json 的文件夹。(/sf/users/367263221/

  • 非常好,但只有当 package.json 位于 vscode 中的顶层时,这才有效 - 如果您的项目由文件夹分隔并且位于其中,您将无法在 vscode 中选择打字稿版本。在这种情况下,打开新的 vscode 并直接进入包含 package.json 的文件夹 (2认同)

小智 18

我自己在next js 13中使用chakra-ui组件时也遇到了同样的问题。

下一个 js 版本13附带 typescript 版本5.0.2。我已将文件中的 typescript 版本更改为 4.9.5 package.json,并在删除文件后重新安装了 npm 包package-lock.json。这个问题得到了解决,我用打字稿编译器命令进行了测试

npx tsc --noEmit
Run Code Online (Sandbox Code Playgroud)


小智 11

将 package.json 中的 typescript 版本更改为 "typescript": "^4.9.5" 并运行yarn/npm install 帮助我解决了问题。


小智 10

转到 VSCode 中的底部栏并选择与您的 package.json 匹配的 TS 版本:

与代码

如果 vscode 使用的 TS 版本高于当前命名空间版本(在你的项目中)会更好


j0h*_*th1 7

我认为该问题与 NX 环境设置有关。我猜你在设置 NX 应用程序时选择了“情感”选项(我也做了同样的事情)。

我可以确认问题已通过"jsxImportSource": "@emotion/react"从 中删除而得到解决tsconfig.json。不需要额外的步骤。

使用"typescript": "5.0.4""@chakra-ui/react": "2.6.0". 都好。


Rob*_*ell 7

转到 VSCode 中的“设置”并搜索'TypeScript version'勾选'Typescript: Enable Prompt Use Workspace Tsdk'

选择上述选项的 VSCode 设置页面的屏幕截图。

您将收到提示,单击“使用工作区版本”。


归档时间:

查看次数:

63379 次

最近记录:

1 年,9 月 前