Search code examples
node.jstypescript2.0typescript2.2

Four different function signatures, encapsulate with one parent type


I have these four different function signatures:

type BeforeHookCallbackMode = (h: IBeforeHook) => void;
type BeforeHookRegularMode = (h?: IBeforeHook) => Promise<any>;
type BeforeHookObservableMode = (h?: IBeforeHook) => Observable<any>;
type BeforeHookEEMode = (h?: IBeforeHook) => EventEmitter;

How can I create a parent type, from which these 4 types inherit? So that I can use that parent type in a function signature, instead of doing:

function(fn : BeforeHookCallbackMode | BeforeHookRegularMode | BeforeHookObservableMode | BeforeHookEEMode) {


}

Solution

  • You're not looking for a "parent" type, but a "union" type.

    type BeforeHookMode = BeforeHookCallbackMode | 
      BeforeHookRegularMode | 
      BeforeHookObservableMode | 
      BeforeHookEEMode;
    
    function (fn: BeforeHookMode) {