为啥 tslint:recommended 不允许模块?

Posted

技术标签:

【中文标题】为啥 tslint:recommended 不允许模块?【英文标题】:Why is tslint:recommended not allowing modules?为什么 tslint:recommended 不允许模块? 【发布时间】:2017-10-27 09:23:04 【问题描述】:

我们正在使用带有 VS Code 的 typescript v2.3.2 和 TSLint v4.5.1 来创建 SPA。代码库正在增长,我们需要以某种方式对其进行模块化。

我尝试使用 typescript 模块进行模块化,但在编译应用程序时发现以下 lint 错误。

[tslint] 'namespace' and 'module' are disallowed (no-namespace)

我正在为 linter 使用这个配置:


  "extends": "tslint:recommended",
  "rules": 
    "no-var-requires": false,
    "no-console": ["error", false],
    "max-line-length": [false]
  

第 89 行的The recommended rules file 显示了此规则:

"no-namespace": true,

我想知道是否有什么问题,以及遵循不会很快过时的良好做法来模块化 SPA 的最佳方法是什么。

欢迎提供代码示例。非常感谢。

【问题讨论】:

使用标准 ES6 模块。 typescriptlang.org/docs/handbook/modules.html 如果您想使用可能适合大型代码库的命名空间,请关闭该规则。 【参考方案1】:

[tslint] 'namespace' 和 'module' 是不允许的(无命名空间)

因为不是标准的 javascript 语法

更多

命名空间是一种特殊的 TypeScript 语法,适用于常见的 JS 模式:https://basarat.gitbook.io/typescript/docs/project/namespaces.html 不要使用带有outFile 的命名空间:https://basarat.gitbook.io/typescript/docs/tips/outFile.html

【讨论】:

github.com/typescript-eslint/typescript-eslint/blob/master/… 声明 [module/namespace] are considered outdated ways to organize TypeScript code. ES2015 module syntax is now preferred (import/export) 但他们没有解释原因

以上是关于为啥 tslint:recommended 不允许模块?的主要内容,如果未能解决你的问题,请参考以下文章

TSLint 抛出警告

如何检查传递给函数的参数数量是不是错误

为啥不允许方法?

我还应该使用啥来替代 nodejs 中的控制台?

为啥python不允许通过引用传递变量

为啥 WCF 中不允许方法重载?