expo-three
Version:
Utilities for using THREE.js with Expo
27 lines (23 loc) • 732 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'
);
}