返回的表达式类型Child不能分配给Parent类型

时间:2016-06-06 05:34:03

标签: typescript

我有一个扩展另一个类的类,如下所示:

export class Parent {
    parentProperty: string;
}

export class Child extends Parent {
    parentProperty: string;
    childProperty: string;
}

我还有一个接受并返回类型Parent的函数:

myFunc(parent: Parent): Parent {
    return parent;
}

当我将Child的实例传递给此函数时,我收到错误:

Returned expression type Child is not assignable to type Parent

我希望myFunc成为所有扩展Parent类型的泛型函数 - 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

myFunc工作正常,如下所示:

export class Parent {
    parentProperty: string;
}

export class Child extends Parent {
    parentProperty: string;
    childProperty: string;
}


function myFunc(parent: Parent): Parent {
    return parent;
}

const foo = myFunc(new Parent());
const bar = myFunc(new Child());
  

我希望myFunc是所有扩展Parent的类型的泛型函数 - 我该如何解决这个问题?

简单地使用通用约束:

function myFunc<T extends Parent>(parent: T): T {
    return parent;
}