什么是最好的方法来强制转换 action
参数在一个简化的 减速器与类型脚本?可能会出现多个操作接口,这些操作接口都使用属性类型扩展基接口。扩展的操作接口可以具有更多的属性,这些属性在操作接口之间都是不同的。下面是一个例子:
interface IAction {
type: string
}
interface IActionA extends IAction {
a: string
}
interface IActionB extends IAction {
b: string
}
const reducer = (action: IAction) {
switch (action.type) {
case 'a':
return console.info('action a: ', action.a) // property 'a' does not exists on type IAction
case 'b':
return console.info('action b: ', action.b) // property 'b' does not exists on type IAction
}
}
问题是,action
需要被强制转换为同时访问 IActionA
和 IActionB
的类型,这样减速器就可以同时使用 action.a
和 action.a
而不会抛出错误。
我对如何解决这个问题有几个想法:
action
到 any
。例如:
interface IAction {
type: string
a?: string
b?: string
}
什么是最好的方式来组织行动/减少打字机? 预先感谢你!