2016-07-31 76 views
4

我有點被打字機裝飾器所迷惑,以及它們是如何解釋的。假設他們通過將元數據與它關聯來「裝飾」一個類。我似乎無法理解元數據如何與類的實例關聯的概念。以角度2爲例。Typescript裝飾器與類的繼承

@Component(
     { 
      selector:... 
     } 
    ) 


    export class foo { ... } 

目前我所瞭解的角度將實例類foo和莫名其妙的實例與裝飾的爭論聯繫起來,以便它可以提供服務,指令和模板。所有這些似乎也可以通過類繼承來實現。如果我有一個Component類,並讓我的組件擴展該類,那麼爲什麼不能角度提供這些參數,當它以與對道具作出反應的方式引導時,並在此使用場景中完全擺脫裝飾器。

class Component { ... } //say this has members such as selector, services, directives, etc.. 

class Foo extends Component { ... } 

那麼你會與之反應,這是技術上的引擎蓋下了什麼與此

new Foo(ElementName, Directives, Services, etc..) 

實例化,在系統啓動/運行。您派生組件並實現其方法。如果你需要在實例化時傳遞信息,那麼你傳入道具對象。

請賜教。

回答

2

據我所知,主要原因是爲了方便靜態評估。通過繼承,您需要執行TS(或編譯後的JS)代碼來獲取信息。

靜態評估此元數據允許工具將其用於自動完成和模板中的所有類型的lint檢查以及建築設計人員和其他工具,以便於構建Angular應用程序。

此外,脫機模板編譯器使用此元數據。