expo-three
Version:
Utilities for using THREE.js on Expo
20 lines (16 loc) • 700 B
text/typescript
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');
}