我有一个扩展另一个类的类,如下所示:
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
类型的泛型函数 - 我该如何解决这个问题?
答案 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;
}