0

我有一个大型 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 使添加属性成员变得更加困难。

欢迎任何建议。

4

1 回答 1

2

一般来说,这似乎更像是我会使用的区域namespace(或者可能是一个单独的外部模块?然后在您当前的模块中,您可以重新导出它。)

但是,假设您确实想以这种方式做事,并且想让 TSLint 高兴。您最简单的解决方案是暂时禁用variable-name

/* tslint:disable:variable-name */
export const MainMenu {
    open,
    close,
    isOpen
};
/* tslint:enable:variable-name */

(请注意,您可以将重新启用的注释向上移动几行 - 我只是更喜欢它在我拥有它的地方以达到审美目的。)

当前还有一个功能请求,要求提供一种从文件中的此规则中排除特定变量的方法tslint.json。所以在路上,这可能是一个选择!

于 2016-02-21T23:37:29.197 回答