tslint错误盯梢的名字:“可观测”
运行,我没有得到之前当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>;
}
}
有谁知道我可以清除此皮棉错误?谢谢!
下面是变量阴影的一个简单示例,以使警告变得清晰。
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库。
如果有人能提供一个逼真的界面阴影会导致问题的例子,我很乐意改变我的看法。
我们(或者至少大多数人)知道阴影是什么,如果他们不知道,他们可以在5秒钟内让Google“投影阴影”。这里的问题是他为什么要接受警告。把它关掉就是你可以做的最糟糕的事情。 – 2017-10-17 16:58:53
@torazaburo我可以想到更糟糕的事情。 – Fenton
不知道如何解决这个问题,但我重新安装了我的软件包依赖包括tslint,现在我不再有错误了。感谢您的时间试图帮助:)
基本上,Fenton解释得很好,他的例子。 影子命名碰撞发生。
那么,为什么不命名一个嵌套变量/参数不是x? ;)
我的例子:
...
.retryWhen(error => {
return error
.mergeMap((error: any) => {
if (error.status === 500) {
...
你看,很多error
参数。
阴影名称错误通常发生在从内部作用域的“外部”作用域使用变量时。这是一个可配置的linting选项,你可能想禁用,但我不知道它为什么会抛出,因为它似乎对我来说工作正常,我没有禁用它。 – Lansana