2017-10-17 65 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參數。