四种不同的函数签名,用一种父类型封装

Four different function signatures, encapsulate with one parent type

我有这四种不同的函数签名:

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

如何创建一个父类型,这 4 个类型从中继承?这样我就可以在函数签名中使用该父类型,而不是这样做:

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


}

您要查找的不是 "parent" 类型,而是 "union" 类型。

type BeforeHookMode = BeforeHookCallbackMode | 
  BeforeHookRegularMode | 
  BeforeHookObservableMode | 
  BeforeHookEEMode;

function (fn: BeforeHookMode) {