tslint 错误 阴影名称:"可观察"



我在运行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,现在我再也没有收到错误了。感谢您花时间提供帮助:)

最新更新