Typescript - 指定类型的对象不能分配给泛型类型

Pav*_*kov 5 typescript

考虑以下简单的接口和类:

interface ITest{
    id :string;
}

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

}
Run Code Online (Sandbox Code Playgroud)

该行this.Do(item)显示错误:Argument of type ITest is not assignable to type T.为什么?

Pal*_*leo 4

Do(item: T){
    alert(item);
}
Run Code Online (Sandbox Code Playgroud)

该方法Do需要一个类型为 的参数T

    var item=<ITest>{};
Run Code Online (Sandbox Code Playgroud)

item创建了一个类型为 的变量ITest

    this.Do(item);
Run Code Online (Sandbox Code Playgroud)

T延伸ITest,但ITest不延伸T。变量 item 有类型ITest,而不是类型T

此代码编译:

Start(){
    var item=<T>{};
    this.Do(item);
}
Run Code Online (Sandbox Code Playgroud)