You are getting the “Cannot redeclare block-scoped variable” error in TypeScript. Don’t worry, in this post, we will find out the cause of the error and how to fix it.
The reason for the “Cannot redeclare block-scoped variable” error?
Case 1: Same variable name
The error occurs when you declare the same variable name, let’s see the example:
var name = "John"; // The "Cannot redeclare block-scoped variable" error var name = "Wick";
Case 2: Because TypeScript feature
// Error "Cannot redeclare block-scoped variable" at 'name' variable. let name: string = "John";
In this case, I am trying to declare a variable with string data type but I get an error message “Cannot redeclare block-scoped variable”. Why is that? Because in TypeScript “let” is used for declaring local variables that exist in block scope instead of function scopes. In Typescript, when you don’t use “import” or “export” statement, your file will be considered as the script (Not a module) and the script share it as a global scope.
How to solve this error?
Solution 1: Declare a module ‘exports‘ with its scope
You need to declare a module ‘exports’ with its scope.
let name: string = "John"; export{name};
Solution 2: Use the ‘namespace‘
Use the ‘namespace‘.
namespace Name {
function return name(name: string) {
// Function or class
}
}
Everything in the ‘namespace’ is considered a global scope. You can put your function or class into it.
Solution 3: Rename the variable
Another simple solution is that you need to rename your variable to fix the “Cannot redeclare block-scoped variable” error in TypeScript.
Solution 4: Reconfigure your compiler
By default, TypeScript uses DOM typing for the common execution environment. Just don’t use DOM typing and your problem will be solved. To do that we need to find the file tsconfig.json file in the TypeScript project directory and edit it.
{ "compilerOptions": { "lib": [ "es6" ] } }
Solution 5: Use IIFE (Immediately Invoked Function Expression)
(function () {
let name = 'John';
})();
IIFEs are used to avoid hanging variables from within blocks, and to allow public access to methods while preserving privacy for variables defined in the function.
Summary
In this guide, I’ve showed you how to solve the “Cannot redeclare block-scoped variable” error in TypeScript. Hope it can help you to solve your problem. Thanks for reading!
Maybe you are interested:
- no index signature with a parameter of type ‘string’ was found on type
- Cannot invoke an object which is possibly ‘undefined’ in TS
- Cannot find name ‘require’ error in typescript
- Cannot find name ‘jQuery’ Error in TypeScript

My name’s Brett Adams. My major is IT at KMA university. I’m here to share my knowledge of Java, C#, C, Javascript, typescript,… through several articles. If you have any questions, let’s contact me.
Name of the university: KMA
Major: IT
Programming Languages: Java, C#, C, Javascript, typescript, ReactJs, Laravel, SQL