打字稿-要键入的字符串

时间:2020-05-08 10:23:07

标签: typescript reflection

我有一个Message类,代表一些数据。每个消息共享相同的标头。但是,根据消息的类型,它们具有不同的有效负载。例如:

class Message {
  serial: string
  length: number
}

class LKMessage extends Message {}

class UDMessage extends Message {
  location: Location
}

这里的问题是我不知道消息类型。用户只需说“发布消息”,然后将类型和数据一起发送即可。 我可以为每种消息类型创建不同的post函数,但是我会写很多相同的代码。

我尝试过这样的事情:

interface MessagePayload {}

interface LKMessagePayload extends MessagePayload {}

interface UDMessagePayload extends MessagePayload {
  location: Location
}

class Message<T extends MessagePayload> {
  serial: string
  length: number
  payload: T
}

问题是实例化:用户将类型作为string发送,所以我不能只写new Message<type>(data)。 我曾考虑过使用反射,但无法使其正常工作。

0 个答案:

没有答案