根据输入类型返回类型

时间:2019-06-15 04:10:20

标签: typescript typescript-generics

我知道也有类似的问题,但我不明白。

如何配置类型为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”中必需。

1 个答案:

答案 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);