似乎我想做的事情是不可能的,但我真的希望它是.
本质上,我有两个接口,我想注释一个函数参数作为它们的组合.
interface ClientRequest {
userId: number
sessionKey: string
}
interface Coords {
lat: number
long: number
}
Run Code Online (Sandbox Code Playgroud)
然后,在函数中,我想做这样的事情:
function(data: ClientRequest&Coords) { ... }
Run Code Online (Sandbox Code Playgroud)
这样我的'data'对象就可以包含这两种类型的所有成员.
我在规范预览中看到了"组合类型'成员"中引用的内容,但似乎尚未进入.
如果不可能,我的解决方案可能如下所示:
interface ClientRequest<T> {
userId: number
sessionKey: string
data?: T
}
function(data: ClientRequest<Coords>) { ... }
Run Code Online (Sandbox Code Playgroud)
哪种情况适用于这种情况,尽管它不像我想的那样动态.我真的希望能够在注释本身中组合多个(2+)类型:
function(data: TypeA&TypeB&TypeC) { ... }
Run Code Online (Sandbox Code Playgroud)
我猜想传统的解决方案是定义一种扩展这些类型的类型,尽管这似乎不那么灵活.如果我想添加一个类型,我必须要么
任何TypeScript专家都会指出我正确的方向?