Merge Two Interfaces

后端 未结 3 1766
长发绾君心
长发绾君心 2020-12-05 09:32

Seeking confirmation or clarification

If I have two interfaces. What is the \"proper\" way to create a merge of those two interfaces.

Foo

IF         


        
3条回答
  •  悲&欢浪女
    2020-12-05 09:54

    This article explains the relation between interfaces and type aliases very well, this part is focused on small differences between them.

    Both

    interface IFooBar extends IFoo, IBar {}
    

    and

    type IFooBar = IFoo & IBar;
    

    are common ways to do this and will behave identically in most cases. Since type takes less characters to type, it could be chosen for that reason.

    The inconsistency that is caused by mixed interface and type shouldn't be a problem; they are just suitable features to achieve the goal. If const BarClass = FooClass does the job, class BarClass extends FooClass {} shouldn't be preferred just because its consistently uses class everywhere (this example is used for illustrative purposes, there's a considerable difference between these approaches).

    Even though interface and type can behave similarly, there is a difference in case of merged interface (also covered in linked article). This will work:

    interface FooBar extends IFoo, IBar {}
    class FooBar { ... }
    

    And this will cause type error:

    type FooBar = IFoo & IBar;
    class FooBar { ... }
    

提交回复
热议问题