TypeScript类型定义中数字开头属性名引发ESLint及React Native错误的解决方案咨询
解决TypeScript中定义数字开头属性类型的ESLint错误问题
我之前也碰到过一模一样的场景,API返回的JSON键以数字开头,导致TypeScript类型定义触发ESLint错误,给你几个实用的解决办法:
给属性名添加引号(最直接的方案)
TypeScript支持用字符串字面量定义对象属性名,对于数字开头的属性,只需要把属性名用单引号或双引号包裹起来即可,这样既符合语法规范,也能让ESLint通过检查:type MyObject = { '1stXxx'?: string; '2ndXxx'?: string; };这种写法完全不影响类型校验,TypeScript会正确识别这些属性,和API返回的JSON结构完美匹配。
使用映射类型简化定义(属性较多时推荐)
如果API返回的数字开头属性比较多,可以用Record映射类型来简化类型定义,避免重复写引号:type MyObjectKeys = '1stXxx' | '2ndXxx'; type MyObject = Record<MyObjectKeys, string | undefined>;这种方式在属性数量多或者需要复用键类型的时候特别方便。
关于ESLint规则的说明
你提到找不到对应的ESLint规则来关闭,其实这个错误本质上是TypeScript语法层面的限制,而不是ESLint的风格规则。因为JavaScript/TypeScript的标识符(包括属性名)不允许以数字开头,所以不加引号的写法本身就不符合语法规范,ESLint只是把这个语法问题暴露出来了,关闭规则也无法解决底层的语法错误,所以最根本的解决方式还是调整类型定义的写法。
内容的提问来源于stack exchange,提问作者Tarvo Mäesepp
相关产品推荐
相关产品推荐

