2015-04-17 56 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); 
} 
相关问题