写了两行代码,一运行就报错:
let name: string
name = 'mia'
console.log(name);
报错:
Cannot redeclare block-scoped variable 'name'.
17405 declare const name: never;
~~~~
hello.ts:9:5
9 let name: string
~~~~
'name' was also declared here.
网上搜索了一下发现是因为,在默认状态下,typescript
将 DOM
作为全局的运行环境,而 DOM
中的全局 window
对象下也有个name
的属性,在这里再次定义一个变量name的时候就报错了。
解决办法:
把自己定义的变量定义为局部内的变量,即在demo的最后导出即可。 将其封装到模块(module)内,module 有自己的作用域,自然不会与全局作用域的变量产生冲突。
let name: string
name = 'mia'
console.log(name);
export {}
- 网上看到说还有一种就是改变运行环境。
我们可以在 tsconfig.json 中做一下声明:
{
"compilerOptions": {
"lib": [
"es2015"
]
}
}