使用 OR 条件在 TypeScript 中扩展多个接口

xox*_*der 2 generics interface node.js typescript typescript-generics

我有三个接口

inteface A {
    name: string
    id: number
    address: string
    details : object
}

   inteface B {
        name: string
        id: string
        address: string
        details : string
        age: number
    }



inteface C {
        name: string
        id: string
        address: object
        details : object
        age: number
        height: number
    }
Run Code Online (Sandbox Code Playgroud)

是的,您注意到不同的接口可能具有不同的类型,其中公共字段 例如接口 Aid: number,但Bid: string

现在我有了一个通用的界面

interface Common {
   group: string
   class: string
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个接受参数 Object 的函数,该函数肯定具有接口 Common字段,但可能具有接口 A、B 和 C 之一的字段

我想使用它将Common扩展其中的任何一个接口AB以及C

function insert(params: Common){
   ....
}

       
Run Code Online (Sandbox Code Playgroud)

现在我想到使用泛型,但我没能做到我想要的,所以有人可以告诉我如何将它与泛型一起使用并获得我想要的东西(如果可以通过泛型完成),

如果没有建议我使用另一种方法。

Pri*_*dam 7

你可以这样做:


type ABC = A | B | C

function insert(params: Common & ABC): {
  ...
}
Run Code Online (Sandbox Code Playgroud)