我知道也有类似的问题,但我不明白。
如何配置类型为inputType
= outputType
?
public addReadableTime(message: PublicMsg | PrivateMsg): PublicMsg | PrivateMsg {
message.displayTime = moment(message.lastModified).format('HH:mm');
return message;
}
// ...
const publicMsg = this.addReadableTime(publicMsg);
TS2322:输入“ PublicMsg |不能将PrivateMsg”分配给类型“ PublicMsg”。类型“ PrivateMsg”中缺少属性“ publicChannelMessageId”,但类型“ PublicMsg”中必需。
答案 0 :(得分:2)
似乎您需要的是具有类型约束的通用方法:
public addReadableTime<T extends PublicMsg | PrivateMsg>(message: T): T {
message.displayTime = moment(message.lastModified).format('HH:mm');
return message;
}
// ...
const publicMsg2 = this.addReadableTime(publicMsg);