看来我想做的是不可能的,但我真的希望是这样.
本质上,我有两个接口,我想把一个函数参数注释为两者的组合.
interface ClientRequest {
userId: number
sessionKey: string
}
interface Coords {
lat: number
long: number
}
然后,在函数中,我想做如下操作:
function(data: ClientRequest&Coords) { ... }
这样我的"数据"对象就可以包含这两种类型的所有成员.
我在spec preview中的"组合类型的成员"下看到了一些引用,但这似乎还没有出现.
如果不可能,我的解决方案可能如下所示:
interface ClientRequest<T> {
userId: number
sessionKey: string
data?: T
}
function(data: ClientRequest<Coords>) { ... }
这在这种情况下是可行的,尽管它不像我希望的那样动态.我真的希望能够在注释本身中组合多种(2+)类型:
function(data: TypeA&TypeB&TypeC) { ... }
我猜传统的解决方案是定义一个扩展这些类型的类型,尽管这似乎不够灵活.如果我想添加一个类型,我必须
- (a) 回到声明并重写它,或者
- (b) 创建一个全新的界面.我不太同意额外的开销.
有没有 typewriter 专家愿意为我指出正确的方向?