2017-10-17 30 views
1

运行,我没有得到之前当tslint我收到以下错误..tslint错误盯梢的名字:“可观测”

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

我跟着这个tutorial添加一个调试操作人员可观察到的,这是工作正常,除非我得到这个皮棉错误。我一直使用这个调试运算符一段时间没有得到lint错误,我不知道为什么我现在得到它。

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

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

有谁知道我可以清除此皮棉错误?谢谢!

+1

阴影名称错误通常发生在从内部作用域的“外部”作用域使用变量时。这是一个可配置的linting选项,你可能想禁用,但我不知道它为什么会抛出,因为它似乎对我来说工作正常,我没有禁用它。 – Lansana

回答

4

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

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 
    } 
] 

是接口打字稿阴影的问题吗?

不是真的 - 你会赶上这里的接口被宣布功能,你也会赶上,因为如果它是打字稿编译器已经告诉你一个问题,有一个问题里面的情况,即...成员列表将显示两个范围内的正确成员。

接口也被擦除 - 所以没有编译后的混淆,例如,如果有人在JavaScript程序中使用TypeScript库。

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

+0

我们(或者至少大多数人)知道阴影是什么,如果他们不知道,他们可以在5秒钟内让Google“投影阴影”。这里的问题是他为什么要接受警告。把它关掉就是你可以做的最糟糕的事情。 – 2017-10-17 16:58:53

+0

@torazaburo我可以想到更糟糕的事情。 – Fenton

0

不知道如何解决这个问题,但我重新安装了我的软件包依赖包括tslint,现在我不再有错误了。感谢您的时间试图帮助:)

0

基本上,Fenton解释得很好,他的例子。 影子命名碰撞发生。

那么,为什么不命名一个嵌套变量/参数不是x? ;)

我的例子:

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

你看,很多error参数。