小编Jos*_*hua的帖子

是否可以在TypeScript注释中组合多种类型的成员?

似乎我想做的事情是不可能的,但我真的希望它是.

本质上,我有两个接口,我想注释一个函数参数作为它们的组合.

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)

我猜想传统的解决方案是定义一种扩展这些类型的类型,尽管这似乎不那么灵活.如果我想添加一个类型,我必须要么

  • (a)回到声明并重写,或
  • (b)创建一个全新的界面.不确定我同意额外的开销.

任何TypeScript专家都会指出我正确的方向?

javascript interface typescript

22
推荐指数
4
解决办法
2万
查看次数

标签 统计

interface ×1

javascript ×1

typescript ×1