考虑以下简单的界面和类:
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
。为什么呢?
答案 0 :(得分:4)
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);
}