错误 TS2451:无法重新声明块作用域变量“$”

use*_*882 8 typescript typescript2.0

尝试使用 typescript 2.1 进行编译时出现以下错误:

TypeScript 错误:node_modules/@types/jquery/index.d.ts(3770,13):错误 TS2451:无法重新声明块范围变量“$”。

不确定这意味着什么或如何解决。

A-D*_*ddy 5

您可能多次导入和/或声明 JQuery,并且 TypeScript 正在让您知道。显然,重复的声明可能会导致问题,特别是当您使用将自身附加到当前实例的插件时$。如果$稍后重新声明,插件可能不再可用。

正确的做法是将所有声明移动到一个位置,例如索引或 main。但是,如果这是不可能的,只需告诉 TypeScript 忽略重复的声明并通过将以下属性添加到您的tsconfig.json

{
  "compilerOptions": {
    ...
    "skipLibCheck": true,
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 模块不是有作用域的吗?为什么 TS 将导入模块视为“重新声明”?这似乎是错误的。将“所有导入”移至一个文件并不是任何人都会真正采取的解决方案。另外 `skipLibCheck` 也不能解决这个问题。 (3认同)