我有一个大型的TypeScript项目,并且最近添加了tslint以强制执行一些基本的代码样式规则。这在很大程度上是无痛的,但有一件事我还在质疑。
我有一些代码,我有一个类似单身的对象,它包含了一些属性和函数。想象一下:
function open(x) {...};
function close(x) {...};
let isOpen = false;
export const MainMenu {
open,
close,
isOpen
};
但问题是tslint抱怨MainMenu的命名,因为我告诉它强制执行camelCase变量名。在所有情况下,除了这个,公约都是正确的,在这样的情况下,我认为大写(Math
,Reflect
等都是正确的。所有都遵循这个惯例。
那我该怎么办?我可以在发生这种情况时禁用规则,或者namespace
概念更适合这个?但后来我使用外部模块,所以我不知道是否应该。另外,namespace
- s使添加属性成员变得更加困难。
欢迎任何建议。
答案 0 :(得分:2)
一般来说,这似乎更像是我使用namespace
的区域(或者可能是一个单独的外部模块?然后在您当前的模块中,您可以重新导出它。)
但是,假设您确实希望以这种方式做事,并且您希望让TSLint感到高兴。最简单的解决方案是暂时禁用variable-name
:
/* tslint:disable:variable-name */
export const MainMenu {
open,
close,
isOpen
};
/* tslint:enable:variable-name */
(请注意,您可以将重新启用的评论移动几行 - 我只是喜欢它用于审美目的。)
您的tslint.json
文件中还有一个当前功能请求for a way to exclude specific variables from this rule。所以可能是一个选择!