如何定义规则使代码成员尽可能设为私有(适配TypeScript技术栈)
解决TypeScript中"智能检测可私有化成员"的规则需求
针对你在C#里用ReSharper的MemberCanBePrivate规则(设为ERROR级别强制成员尽可能私有/受保护),现在想在TypeScript里实现类似效果的需求,我整理了几个适配你现有工具链的方案,还有研究这类规则的实用渠道:
1. 转用ESLint + TypeScript插件(推荐方案)
因为TSLint已经正式停止维护,官方推荐迁移到ESLint,而@typescript-eslint插件正好有你需要的智能规则:
@typescript-eslint/prefer-private-member:这个规则会自动检测类中没有在外部被引用的成员,提示你将其设为私有。完全匹配你在C#里用ReSharper的场景。- 配置步骤:
在你的ESLint配置文件(比如.eslintrc.json)中添加规则:
如果你想和{ "extends": ["plugin:@typescript-eslint/recommended"], "rules": { "@typescript-eslint/prefer-private-member": "error" } }.editorconfig配合,ESLint会自动读取.editorconfig里的基础格式配置(比如缩进、换行),规则本身则在ESLint配置中定义即可。
2. 利用ReSharper的TypeScript内置检查
其实ReSharper本身就支持TypeScript的类似检查,你可能没注意到:
- 找到规则:打开ReSharper设置 →
Code Inspection > Inspection Severity > TypeScript > Redundancies in Code > Member can be made private - 把这个规则的级别设为ERROR,这样就能和C#里的规则效果一致,强制团队成员修改。
- 共享配置:设置完成后,点击设置界面的「Export」按钮,把配置导出到团队共享的
.DotSettings文件里,其他人导入就能同步规则。
3. 旧TSLint的临时方案(不推荐)
如果你暂时还没升级到ESLint,TSLint有个member-access规则,但它更偏向强制所有成员必须加访问修饰符,而非智能检测是否可私有化。可以搭配no-unused-variable规则辅助,但效果远不如ESLint的规则智能,而且TSLint已经不再维护,建议尽快迁移。
研究这类规则的实用渠道
- ReSharper官方文档:直接搜索「ReSharper TypeScript inspection rules」,里面会列出所有支持的TypeScript检查规则,每个规则都有详细的适用场景说明。
- @typescript-eslint插件文档:这个插件的文档里有所有TypeScript专属的ESLint规则,每个规则都有示例和配置说明,是找TypeScript代码规则的核心渠道。
- JetBrains社区论坛:如果对ReSharper的TypeScript规则有疑问,去JetBrains官方论坛提问,或者查看他们的Issue Tracker,很多用户会分享类似的配置技巧。
- TypeScript GitHub Discussion:TypeScript官方仓库的Discussion板块经常有关于代码风格、规则的讨论,能找到很多一线开发者的实践思路。
内容的提问来源于stack exchange,提问作者Squirrelkiller
相关产品推荐
相关产品推荐

