我要声明一个返回常见类型或其扩展类型
的函数interface Common {
id: number;
}
interface AdditionalInformation extends Common {
myname: string;
}
当然,该功能返回包含 ID 属性的对象
希望它也可以返回 myName 属性
我尝试声明这样的函数:
export class Lib {
public static lowestCommonDenominator <T extends Common>(): Common {
const a: Common = { id: 1 };
return a;
}
public static firstCaseFunction(): Common {
const ok: Common = this.lowestCommonDenominator();
return ok;
}
public static secondCaseFunction(): AdditionalInformation {
// Property 'myname' is missing in type 'Common' but required in type 'AdditionalInformation'.ts(2741)
const ko: AdditionalInformation = this.lowestCommonDenominator();
return ko;
}
}
但是,当我将功能分配给扩展类型时,我会得到错误:
属性'myname'在类型的" common"中缺少,但在类型中需要 '额外信息'.ts(2741(
是否可以实施我想要的东西?
此代码段删除错误
export class Lib {
public static lowestCommonDenominator <T extends Common>(): T {
const a: Common = { id: 1 };
return a as T;
}
public static firstCaseFunction(): Common {
const ok: Common = this.lowestCommonDenominator();
return ok;
}
public static secondCaseFunction(): AdditionalInformation {
const ko: AdditionalInformation = this.lowestCommonDenominator<AdditionalInformation>();
return ko;
}
}