我们已经在代码库的const中定义了一些枚举值,如下所示:
const Templates = {
NewMessageFromBot: 'new_message_from_bot,
NewMessageFromHuman: 'new_message_from_human',
NewUnreadNotification: 'new_unread_notification',
}
(示例被有意地简化了,但是实际上,对于我们用于消息的不同HTML模板,它实际上包含了近100个条目。)
我们要使用这些名称作为
之类的函数的类型function getTemplateName(message: MessageDocument, templateName: Templates) { ... }
但是我们当然会得到Templates' refers to a value, but is being used as a type here.ts(2749)
是否有任何方法可以将 Templates 对象用作一种类型,还是需要将其重构为 Enum ,还是有人有什么好的建议?提前致谢!
我尝试通过搜索“在TypeScript中将对象重用为类型”来搜索相似的主题,但实际上看来我需要在这里做一些高级的事情,或者只是重构。
function getTemplateName(message: MessageDocument, templateName: Templates) { ... }
答案 0 :(得分:1)
您可以使用String Enums,解决方案是:
enum Templates = {
NewMessageFromBot = 'new_message_from_bot,
NewMessageFromHuman = 'new_message_from_human',
NewUnreadNotification = 'new_unread_notification',
}
您可以使用Enum作为类型,并获取字符串。
如果您想看一眼,这里有一些info。