【发布时间】:2018-11-19 08:23:57
【问题描述】:
我有一个接口Action:
interface Action {}
还有这个ActionSpecificAction的实现:
class SpecificAction implements Action {
payload?: Any
}
是否可以在 TS 中构造一个 switch 操作符,像这样:
let action: Action
switch (action) {
case SpecificAction: //it works
console.log(action.payload) // it doesn't
}
在这种情况下是否有可能知道该操作已经属于SpecificAction 类型?
【问题讨论】:
-
你能用discriminated union吗?
-
我可以,但我真的不知道它有多好。我仍然需要检查一些属性而不是自己输入
-
@VladyslavZavalykhatko 是的,你仍然需要检查一些属性,但这就是编译器支持的开关和类型保护
-
@TitianCernicova-Dragomir,很公平)
-
在实践中
action是实现Action的类的实例,还是只是一个常规对象?如果是前者,我的回答是否有帮助,还是我误解了您要查找的内容?
标签: typescript