2015-04-17 91 views
4

求索下面的簡單接口和一個類:打字稿 - 指定類型的對象是不分配給通用型

interface ITest{ 
    id :string; 
} 

class SuperClass<T extends ITest>{ 
    Start(){ 
     var item=<ITest>{}; 
     this.Do(item); 
    } 
    Do(item: T){ 
     alert(item); 
    } 

} 

線與this.Do(item)顯示了錯誤:Argument of type ITest is not assignable to type T。爲什麼?

回答

3
Do(item: T){ 
    alert(item); 
} 

Do預計T類型的參數的方法。

var item=<ITest>{}; 

可變item創建ITest類型的。

this.Do(item); 

T延伸ITest,但ITest沒有延伸T。變量項目類型爲ITest,而不是類型T

此代碼編譯:

Start(){ 
    var item=<T>{}; 
    this.Do(item); 
} 
相關問題