TypeScript错误TS2448:块级作用域变量'wizard'声明前使用如何解决?
报错根因
你声明的常量名和你调用的构造函数名完全重名,同为wizard。在块级作用域规则下,执行new wizard(args)时,TypeScript会优先匹配当前作用域下你正在声明的wizard常量,而此时这个常量还没完成声明赋值,因此触发了「变量在声明前被使用」的报错。
解决方案
方案1:修改变量名(最推荐)
给自定义的实例变量改名,避免和构造函数重名,同时建议遵循构造函数首字母大写的通用命名规范,从根源避免命名冲突:
let args = { "wz_nav_style": "dots", // dots, tabs, progress "buttons": true, "navigation": 'all' // buttons, nav, all }; // 实例名改为myWizard,和构造函数区分开 const myWizard = new wizard(args); myWizard.init(); document.addEventListener("submitWizard", function (e) { alert("Form Submit"); });
方案2:明确指定构造函数的作用域
如果构造函数是挂载在全局对象下的,可以主动指定作用域避免匹配到局部变量,以浏览器环境为例:
const wizard = new window.wizard(args);
内容的提问来源于stack exchange,提问作者Dharish Kumar
相关产品推荐
相关产品推荐

