Node.js项目迁移TypeScript报TS2300: Duplicate identifier 'string'错误求助
问题原因
该报错和import、require混用完全无关,是解构参数的类型标注语法错误导致的。
你写的{ user_id:string }在JavaScript/TypeScript的对象解构语法中,默认语义是「将解构得到的user_id属性值重命名为string变量」,而非给user_id标注string类型。此时你相当于在函数参数作用域内声明了一个名为string的标识符,而string是TypeScript内置的基础类型名,自然触发「重复标识符」报错。
修复方案
如果要给解构参数标注类型,需要将类型定义写在整个解构结构的后方,正确写法如下:
// 写法1:内联标注类型 socket.on('login', async function ({ user_id }: { user_id: string }) { // 原有逻辑 })
如果参数较多,也可以提前定义类型接口提升可读性:
// 写法2:提前定义参数类型 interface LoginPayload { user_id: string // 可补充其他login事件携带的参数字段 } socket.on('login', async function ({ user_id }: LoginPayload) { // 原有逻辑 })
补充说明
你之前尝试的安装类型声明包、调整tsconfig.json配置等操作,都是针对全局类型声明重复的场景,和本次的语法错误不匹配,因此无法生效。
内容的提问来源于stack exchange,提问作者Qiulang
相关产品推荐
相关产品推荐

