【问题标题】:tslint error Shadowed name: 'Observable'tslint 错误阴影名称:'Observable'
【发布时间】:2018-03-29 09:05:38
【问题描述】:

运行 tslint 时出现以下错误,我之前没有遇到过。

ERROR: C:/...path..to../observable-debug-operator.ts[27, 13]: Shadowed name: 'Observable'

我按照tutorial 向 Observable 添加了一个调试运算符,它工作正常,除了我收到这个 lint 错误。我一直在使用这个调试操作符,但没有收到 lint 错误,我不知道为什么我现在得到它。

这是第 27 行的代码,用调试方法修改类型定义

declare module 'rxjs/Observable' {
  interface Observable<T> { // line 27
    debug: (...any) => Observable<T>;
  }
}

有谁知道如何清除这个 lint 错误?谢谢!

【问题讨论】:

  • 当您在内部范围内使用“外部”范围内的变量时,通常会发生阴影名称错误。这是一个可配置的 linting 选项,您可能希望禁用它,但我不确定为什么它会为您抛出,因为它似乎对我来说工作正常而且我没有禁用它。

标签: angular typescript rxjs observable tslint


【解决方案1】:

基本上,Fenton 用他的例子很好地解释了这一点。 命名冲突时会出现阴影。

那么为什么不将嵌套变量/参数命名为 x 以外的名称呢? ;)

我的例子:

...
.retryWhen(error => {
  return error
    .mergeMap((error: any) => {
      if (error.status === 500) {
...

你看,很多error参数。

【讨论】:

    【解决方案2】:

    这是一个变量阴影的简单示例,以使警告清晰。

    var x = 4;
    
    function example() {
        var x = 5; // x is shadowing the outer scope's x variable
    }
    

    如果您声明一个接口的扩展(即Observable 的两个实例具有相同的公共根),从技术上讲,您并不是在隐藏,但如果您在多个级别上有一个Observable,则可能不清楚你指的是哪个。

    您可以使用以下选项关闭阴影警告:

    "no-shadowed-variable": [
      true,
      {
        "class": true,
        "enum": true,
        "function": true,
        "interface": false,
        "namespace": true,
        "typeAlias": false,
        "typeParameter": false
      }
    ]
    

    TypeScript 中的界面阴影是一个问题吗?

    并非如此 - 你会发现接口被声明在函数中的情况,你也会发现这种情况,因为如果这是一个问题,TypeScript 编译器就会告诉你有问题...即成员列表将向您显示两个范围内的正确成员。

    接口也被删除 - 因此不会出现编译后混淆,例如,如果有人在 JavaScript 程序中使用您的 TypeScript 库。

    如果有人能提供一个界面阴影会导致问题的现实示例,我很乐意改变我的看法。

    【讨论】:

    • 我们(或至少大多数人)知道阴影是什么,如果他们不知道,他们可以在五秒钟内搜索“shadow tslint”。这里的问题是他为什么会收到警告。关闭它几乎是你能做的最糟糕的事情。
    • @torazaburo 我能想到更糟糕的事情。
    【解决方案3】:

    不知道这是如何解决的,但我重新安装了我的包依赖项,包括 tslint,现在我不再收到错误了。感谢您花时间提供帮助:)

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 2019-01-18
      • 2019-08-13
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2017-12-04
      相关资源
      最近更新 更多