迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > TypeScript >

TypeScript 中 Cannot redeclare block-scoped variable 错误

作者:迹忆客 最近更新:2022/12/28 浏览次数:

当我们在同一个块中重新声明一个变量或当 TypeScript 使用全局类型时,会出现错误“Cannot redeclare block-scoped variable”,这会干扰局部变量名称。 为了解决这个错误,在一个块中只声明一次变量并使用 ES 模块。

下面是产生上述错误的示例代码

// ⛔️ Error: Cannot redeclare block-scoped variable 'name'.ts(2451)
// lib.dom.d.ts(17330, 15): 'name' was also declared here.
const name = 'James Doe';

TypeScript 中 Cannot redeclare block-scoped variable 错误

名称变量在 DOM 库的类型中的某处声明,因此全局类型定义与局部变量声明冲突。

我们可以通过将文件转换为 ES 模块来解决错误。

const name = 'James Doe';

console.log(name); // 👉️ "James Doe"

export {};

export {} 行将文件标记为外部模块。 模块是包含至少 1 个导入或导出语句的文件。

我们也可以通过重命名变量来解决错误。

const employeeName = 'James Doe';

console.log(employeeName); // 👉️ "James Doe"

局部变量名称与全局类型不冲突,因此错误已解决。

如果我们在同一范围内重新声明一个变量,也会发生该错误。

const country = 'Germany';

// ⛔️ Cannot redeclare block-scoped variable 'country'.ts(2451)
const country = 'Germany';

如果需要更改变量的值,请使用 let 关键字声明变量并更改其值而无需重新声明。

let country = 'Germany';

country = 'Austria';

console.log(country); // 👉️ "Austria"

请注意 ,我们可以使用相同的名称在不同的块中声明一个变量。

const country = 'Germany';

if (Math.random() > 0.5) {
  const country = 'Austria';
  console.log(country); // 👉️ "Austria"
}

console.log(country); // 👉️ "Germany"

大括号允许我们创建一个块。 这是相同的示例,但没有 if 语句。

const country = 'Germany';

{
  const country = 'Austria';
  console.log(country); // 👉️ "Austria"
}

console.log(country); // 👉️ "Germany"

如果所有建议都无法解决您的错误,请尝试使用立即调用的函数表达式。

const country = 'Germany';

(function () {
  const country = 'Austria';
  console.log(country);
})();

console.log(country); // 👉️ "Germany"

该函数在脚本运行时立即被调用。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 TypeScript 中返回一个 Promise

发布时间:2023/03/19 浏览次数:182 分类:TypeScript

本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便