我在运行tslint时遇到了以前没有遇到的错误。。
ERROR: C:/...path..to../observable-debug-operator.ts[27, 13]: Shadowed name: 'Observable'
我遵循了本教程,向Observable添加了一个调试运算符,它运行得很好,只是我遇到了这个lint错误。我已经使用这个调试操作符一段时间了,但没有得到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
}
]
接口阴影是TypeScript中的一个问题吗?
不是真的-你会发现函数内部声明了一个接口的情况,你也会发现,因为如果这是一个问题,TypeScript编译器就会告诉你有问题。。。即,成员列表将向您显示两个作用域中的正确成员。
接口也会被擦除,因此不会出现编译后的混乱,例如,如果有人在JavaScript程序中使用TypeScript库。
如果有人能提供一个界面阴影会导致问题的现实例子,我很乐意改变我的观点。
基本上,Fenton用他的例子很好地解释了这一点。命名冲突时会出现阴影。
那么,为什么不将嵌套的变量/参数命名为x以外的其他名称呢?;)
我的例子:
...
.retryWhen(error => {
return error
.mergeMap((error: any) => {
if (error.status === 500) {
...
你看,有很多error
参数。
不确定这是如何修复的,但我重新安装了包依赖项,包括tslint,现在我再也没有收到错误了。感谢您花时间提供帮助:)