type AnyFunction = (...args: any[]) => any; type AnyObject = { [key: string]: any }; export default function parseAssetCallback( assetName: string, callbackOrDictionary: AnyFunction | AnyObject ): any { if (typeof callbackOrDictionary === 'function') { return (callbackOrDictionary as AnyFunction)(assetName); } else if ( callbackOrDictionary !== null && typeof callbackOrDictionary === 'object' ) { if (assetName in callbackOrDictionary) { return callbackOrDictionary[assetName]; } throw new Error( `parseAssetCallback: object doesn't contain key: ${assetName}` ); } throw new Error( 'parseAssetCallback: prop `callbackOrDictionary` must be a function or object' ); }