无法在TypeScript中重新声明块范围变量'name'

Par*_*val 12 typescript

嗨,我正在学习打字稿.

我的代码中有.

var name:string="Hello world";
console.log(name);
Run Code Online (Sandbox Code Playgroud)

在编译时,我收到此错误.

error TS2451: Cannot redeclare block-scoped variable 'name'.
index.ts(4,5): error TS2451: Cannot redeclare block-scoped variable 'name'.
Run Code Online (Sandbox Code Playgroud)

有人能形容我为什么会收到这个错误吗?

Nit*_*mer 10

name属性在window对象上定义:

interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64, GlobalFetch {
    ...
    name: string;
    ...
}
Run Code Online (Sandbox Code Playgroud)

(https://github.com/Microsoft/TypeScript/blob/master/lib/lib.d.ts#L17226)

您需要为变量提供一个新名称:

var myname = "Hello world";
console.log(myname);
Run Code Online (Sandbox Code Playgroud)


Ahm*_*URI 7

您可以export{}在文件的开头添加。

  • @rahul,“export {}”使其成为一个模块,因此它具有自己的模块范围,因此可以在没有类的情况下使用“name”。请参阅 https://medium.com/@muravitskiy.mail/cannot-redeclare-block-scoped-variable-varname-how-to-fix-b1c3d9cc8206 (4认同)
  • 您能解释一下为什么要这样做吗? (3认同)