2012-11-14 27 views
2

當我玩過TypeScript語言時,我對類成員速記語法連同繼承感到困惑。假設你有兩個語義intendical類以下有效打字稿,並與一個屬性的接口:TypeScript類成員速記bug?

class Person1 implements HasName { 
     constructor(public name: string) {} 
    } 

    class Person2 implements HasName { 
     public name : string; 
     constructor(name: string) { 
     this.name = name; 
     } 
    } 

    interface HasName { 
     name : string; 
    } 

現在,如果你嘗試將「名」屬性在HasName接口重新命名,只有在PERSON2成員將是正確的重命名和Person1你會得到一個TypeScript錯誤,說它不再實現HasName。

這種行爲的地方,它不會是可以安全地使用簡寫語法類成員: -/

這是一個錯誤預期?就我而言,重構操作永遠不會導致編譯器錯誤。它應該重命名Person1中的短手成員,這聽起來像是一個bug。

回答

3

如果你描述的是真的,那麼我同意它是一個錯誤。但是你必須區分一個語言和一個插件到Visual Studio。你的bug是在visual studio插件的重構部分,而不是在語言本身。請注意,由於最新版本(0.8.0)是一個alpha版本,因此存在大量未實現的功能。

+1

+1 - 編譯器正確識別它,所以TypeScript語言或編譯器中沒有錯誤。 – Fenton

+0

我沒有使用視覺工作室,我只是在他們的頁面上打字遊戲。此外,如果您單擊HasName界面中的名稱字段,您將看到Person1中的名稱字段不會像其他名稱成員那樣突出顯示。 – user1823768

+0

這是一回事。你所描述的是一個被重寫的工具,唯一的區別就是它在瀏覽器中。這是一個錯誤,但不是語言或編譯器。 – Rafal