TypeScript接口中的访问器为何不能使用逗号作为分隔符
TypeScript接口getter成员逗号分隔报错问题说明
错误复现
在接口中定义getter访问器时,如果在访问器声明末尾使用逗号作为分隔符,会直接触发解析错误:interface I { get x(): number, // ^-- 此处不能使用逗号 }抛出的TS错误码对应提示为:
'{' expected.ts(1005)
合法兼容写法
该语法位置支持两种合法分隔方式:使用分号作为分隔符,或直接省略分隔符,两种写法都可以正常通过TS编译,示例如下:interface I { get x(): number; get y(): number }规则设计原因
从语法实现角度看,该限制并非技术上无法绕过,核心设计考量是TypeScript作为JavaScript的超集,在访问器相关语法上完全对齐JavaScript标准规范:JavaScript类内部的方法、getter/setter成员之间,标准语法仅支持分号分隔或省略分隔符,不接受逗号作为成员分隔符。TypeScript没有为接口内的访问器成员单独扩展逗号分隔的语法规则,一方面是为了降低语法解析阶段的歧义风险,另一方面也是为了避免和标准JS语法产生不必要的分歧,降低开发者的语法认知成本。
官方版本发布说明中并未专门提及该限制,当项目linter强制要求所有类型成员使用逗号作为分隔符时,该语法限制会对开发流程造成阻碍,这类场景下可以调整linter规则,对接口内的getter/setter成员豁免逗号分隔要求,或统一使用分号作为类型成员的分隔符即可解决冲突。
内容的提问来源于stack exchange,提问作者Doofus
相关产品推荐
相关产品推荐

