Return 基于输入类型的类型
Return type based on input type
我知道有类似的问题,但我没听懂。
如何将类型配置为 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: Type 'PublicMsg | PrivateMsg' is not assignable to type 'PublicMsg'. Property 'publicChannelMessageId' is missing in type 'PrivateMsg' but required in type 'PublicMsg'.
看来您需要的是具有类型约束的泛型方法:
public addReadableTime<T extends PublicMsg | PrivateMsg>(message: T): T {
message.displayTime = moment(message.lastModified).format('HH:mm');
return message;
}
// ...
const publicMsg2 = this.addReadableTime(publicMsg);
我知道有类似的问题,但我没听懂。
如何将类型配置为 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: Type 'PublicMsg | PrivateMsg' is not assignable to type 'PublicMsg'. Property 'publicChannelMessageId' is missing in type 'PrivateMsg' but required in type 'PublicMsg'.
看来您需要的是具有类型约束的泛型方法:
public addReadableTime<T extends PublicMsg | PrivateMsg>(message: T): T {
message.displayTime = moment(message.lastModified).format('HH:mm');
return message;
}
// ...
const publicMsg2 = this.addReadableTime(publicMsg);